搜档网
当前位置:搜档网 › 哈工大c语言 练习题

哈工大c语言 练习题

哈工大c语言 练习题
哈工大c语言 练习题

求用户输入的两个数的商,程序运行时,以如下格式输入数据:

Input two integers:4 2↙

请改正程序中的错误,使它能得出正确的结果。

#include <>

main()

{

int a, b, c;

printf("Input two integers:");

scanf("%d,%d", &a, &b);

c = a\b;

printf("The quotient of a and b is :%d", c);

}

# include <>

int main ()

{

int a,b,c;

printf ("Input two integers:");

scanf ("%d %d",&a,&b);

c=a/b;

printf ("The quotient of a and b is :%d\n",c);

>

return 0;

}

使用const常量定义圆周率pi=,编程从键盘输入圆的半径r,计算并输出圆的周长和面积。输出的数据保留两位小数点。

输入格式要求:"%lf"

提示信息:"Input r:"

输出格式要求:

"printf WITHOUT width or precision specifications:\n"

"circumference = %f, area = %f\n"

"printf WITH width and precision specifications:\n"

~

"circumference = %, area = %\n"

程序运行示例如下:

Input r:printf WITHOUT width or precision specifications:

circumference = , area =

printf WITH width and precision specifications:

circumference = , area =

#include <>

int main()

~

{

const double PI=;

double r;

printf("Input r:");

scanf("%lf", &r);

printf("printf WITHOUT width or precision specifications:\n");

printf("circumference = %f, area = %f\n",2*PI*r,PI*r*r);

printf("printf WITH width and precision specifications:\n");

printf("circumference = %, area = %\n",2*PI*r,PI*r*r);

return 0;

|

}

写一个程序,将接收的华氏温度转换为对应的摄氏温度。程序应显示如下的提示信息: Please input fahr:

然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。程序使用如下的公式完成转换:摄氏温度= *(华氏温度–)/

输入格式要求:"%lf"

提示信息:"Please input fahr: "

输出格式要求:"The cels is: %.2f"

#include <>

|

#include <>

int main()

{

double f;

double c;

printf("Please input fahr: ");

scanf("%lf",&f);

c=*/;

printf("The cels is: %.2f",c);

return 0;

}

从键盘输入任意的字符,按下列规则进行分类计数。

第一类:‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’

第二类:‘+’,‘-’,‘*’,‘/’,‘%’,‘=’

第三类:其它字符。

输出格式要求:"class1=%d, class2=%d, class3=%d\n"

程序运行示例如下:

ghdf^%^#$^&(+-//+_8*(\

class1=1, class2=7, class3=14

#include <>

^

int main()

{

char ch;

int a = 0,b = 0,c = 0;

while ((ch = getchar()) != '\n') /*当读入的字符不是换行符时*/

{

if (ch >= '0' && ch <= '9') /*判断是否是数字*/

++a;

else if (ch == '+'||ch == '-'||ch == '*'||ch == '%'||ch == '/'||ch == '=') /*判断是否是巴拉巴拉*/

++b;

{

else

/*是其它字符*/

++c;

}

printf("class1=%d, class2=%d, class3=%d\n",a,b,c);

return 0;

}要求:

输入为一个数n;

输出为1~n的奇数的阶乘之和;

要求使用函数实现

输入输出示例(第一行为输入,第二行为输出):

5

127

#include<>

long Fact(int n)

{

int i;

long result=1;

for(i=1;i<=n;i++)

}

{

result*=i;

}

return result;

}

int main()

{

int m,j,sum;

long ret;

scanf("%d",&m);

:

sum=0;

for(j=1;j<=m;j=j+2)

{

ret=Fact(j);

sum=sum+ret;

}

printf("%d\n",sum);

return 0;

}

键盘任意输入一下整数n,编程计算输出1~n之间的素数之和。

要求:判断素数用函数实现。

说明:素数是不能被1和它本身以外的其它整数整除的正整数(负数、0和1都不是素

数)

输入输出示例(第一行为输入,第二行为输出):

10

17

#include <>

#include <>

int ss(int n)

>

{

int i;

if(n<2) return 0;

for (i=2; i<=(int)sqrt((double)n); i++)

if (n%i==0) return 0;

return 1;

}

int main(void)

{

int i,sum=0,n;

!

scanf("%d",&n);

for (i=1; i<=n; i++)

if(ss(i))

sum+=i;

printf("%d\n",sum);

return 0;

}

从键盘多次输入不同的整数n,编程计算输出1~n之间的素数之和。

要求:

1)判断素数调用函数实现;

2)用循环结构,输入5次不同的整数。

输入输出实例(奇数行为输入,偶数行为输出):

25

100

17

58

28

100

37

197

!100

1060

#include <>

#include <>

int ss(int n)

{

int i;

if(n<2) return 0;

for (i=2; i<=(int)sqrt((double)n); i++)

if (n%i==0) return 0;

return 1;

}

int main(void)

{

int i,sum=0,n;

int counter=0;

do{

scanf("%d",&n);

counter++;

@

for (i=1; i<=n; i++)

if(ss(i))

sum+=i;

printf("%d\n",sum);

sum=0;

}while(counter<=4);

return 0;

}

(请用一维数组完成)某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5, 然后用和除以10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

"

输入格式要求:"%d"

提示信息:"Input a 4 digits number\n"

输出格式要求:"%d"

程序运行示例如下:

Input a 4 digits number

1234

9876

#include <>

int main ()

{

int Digit[4];

int n;

int i;

int m;

printf ("Input a 4 digits number\n");

scanf("%d",&n);

Digit[0]=n/1000;

Digit[1]=(n-1000*Digit[0])/100;

Digit[2]=(n-Digit[0]*1000-Digit[1]*100)/10; Digit[3]=n-Digit[0]*1000-Digit[1]*100-Digit[2] *10;

)

for(i = 0;i <=3;i++)

{

Digit[i]=(Digit[i]+5)%10;

}

m=

Digit[0]+10*Digit[1]+100*Digit[2]+1000*Digit[ 3];

printf("%d",m);

return 0;

}

(请用二维数组完成)从键盘为3*3的矩阵输入数据,找出主对角线上最大的元素,以及所在的行号。(第一行行号为0)

**输入格式要求:"%d"

*

**输出格式要求:"max=%d ,row=%d"

屏幕输入数据,输出最终结果(每个数字之间空一格):

程序运行示例如下:

1 2 3

4 5 6

7 8 9

max=9 ,row=2

# include <>

int main ()

{

int i, j;

int s[3][3];

int max, row;

for (i = 0; i < 3; i++)

{

for (j = 0; j < 3; j++)

{

scanf ("%d", &s [i][j]);

}

}

)

max = s [0][0];

row = 0;

for (i = 0; i < 3; i++)

{

if (max < s [i][i])

{

max = s [i][i];

row = i;

}

}

{

printf ("max=%d ,row=%d", max, row);

return 0;

}

计算游戏人员的年龄。有5个人围坐在一起,问第5个人多大年纪,他说比第4个人大2岁;问第4个人,他说比第3个人大2岁;问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁,问第5个人多大年纪。输入格式:无

输出格式:"The 5th person's age is %d\n"

# include <>

int Fs (int x);

int main ()

{

int age;

int n = 5;

age = Fs (n);

printf ("The 5th person's age is %d\n", age);

return 0;

}

int Fs (int x)

{

{

if (x == 1)

return 10;

else

return 2 + Fs (x - 1);

}

输入一组包含10个整数的数组,找出其中的最小元素,并与第一个元素交换。输出这个数组。要求交换元素时调用swap_min函数。

输入输出示例(第一行为输入,第二行为输出):

22 20 9 8 7 6 12 17 1 3

1 20 9 8 7 6 1

2 17 22 3#include <>

#include <>

void swap_max(int *a,int *b);

int main()

{

int a[11];

int i,j,k;

for(i=0;i<10;i++)

{

scanf(" %d",&a[i]);

}

k=0;

#

for(j=0;j<10;j++)

{

if(a[j]>a[k])

{

k=j;

}

}

swap_max(&a[k],&a[0]);

printf("%d %d %d %d %d %d %d %d %d %d",a [0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);

return 0;

~}

void swap_max(int *a,int *b)

{

int temp;

temp=*a;

*a=*b;

*b=temp;

}

按照给定的函数原型编程实现两个字符串的连接(不允许使用字符串连接函数strcat)。函数原型:

void Mystrcat(char a[ ], char b [ ]);

要求:

将字符数组a中存放的字符串连接到字符数组b中;在主函数读入两个字符串(读入的字符串可包括空格);连接之后的字符串在主函数输出;字符串长度最长为70。

输入输出样例(前两行为输入,最后一行为输出):

Hello!

How are you

How are youHello!#include <>

#include <>

void Mystrcat(char a[],char b[]);

int main()

~

{

char a[80],b[80];

gets(a);

gets(b);

Mystrcat(a,b);

puts(a);

return 0;

}

void Mystrcat(char a[],char b[])

{

int i,n,m;

m=strlen(b);

n=strlen(a);

for (i = 0; i < m+1; ++i)

{

a[n+i]=b[i];

}

a[m+n+1]='\0';

}

用循环结构编程,输出如下图案。

*

***

*****

***

*

# include <>

# define N 5

int main ()

{

-

char m [N][N];

int i;

for (i = 0; i < N; i++)

{

if (i == 0 || i == 4)

{

printf (" %c\n", m[0][2] = '*');

}

else if (i == 1 || i == 3)

{

printf (" %c%c%c\n", m [1][1] = '*', m[1][2] = '*', m[1][3] = '*');

}

else if (i == 2)

{

printf ("%c%c%c%c%c\n", m [i][0] = '*', m [i][1] = '*', m [i][2] = '*', m [i][3] = '*', m [i][4] = '*');

}

}

return 0;

}

^

有30个人,其中有男人、女人和小孩,在一家饭馆吃饭共花了50元:每个男人花3元,每个女人花2元,每个小孩花1元,问男人、女人和小孩各几人

**输出格式要求:(前两行为表头格式,最后一行为输出答案格式,有几种可能答案输出几行,第一个%2d表示行号(从1开始),后三个%d分别为男人、女人、小孩的人数,按男人数递增顺序输出)

"\tMEN\tWOMEN\tCHILDREN\n"

"-----------------------------------------\n"

"%2d:\t%d\t%d\t%d\n"

# include <>

# define N 30

int main ()

{

int man, woman, child;

int r= 0;

printf

("\tMEN\tWOMEN\tCHILDREN\n");

printf

("-----------------------------------------\n");

for (man = 0; man < N; man++)

{

for (woman = 0; woman < N - man; woman ++)

{

child = N - man - woman;

{

if (3 * man + 2 * woman + 1 * child == 50)

.

{

r ++;

printf

("%2d:\t%d\t%d\t%d\n", r, man, woman, child);

}

}

}

}

return 0;

}

'

按如下函数原型,用二维数组作为函数参

数,编程计算并输出n×n阶矩阵的转置矩阵。

其中,n由用户从键盘输入。已知n值不超过10。

void Transpose(int a[][N], int n);

void InputMatrix(int a[][N], int n);

void PrintMatrix(int a[][N], int n);

输入提示信息要求:"Input n:\n"

输入格式:"%d"

输出提示信息:"The transposed matrix is:\n"输出要求:"%d\t"

输出矩阵时,每输出一行就换行

注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程

输入输出示例:

Input n:

2

1 1

0 2

The transposed matrix is:

1 0

1 2

-

# include <>

# define N 10

void Transpose (int m[][N], int n);

void InputMatrix (int m [][N], int n);

void PrintMatrix (int m [][N], int n);

int main ()

{

int n;

int m [N][N];

printf ("Input n:\n");

!

scanf ("%d", &n);

InputMatrix (m, n);

Transpose (m, n);

printf ("The transposed matrix is:\n");

PrintMatrix (m, n);

return 0;

}void InputMatrix (int m [][N], int n) {

int i, j;

for (i = 0; i < n; i++)

{

for (j = 0; j < n; j++)

{

scanf ("%d", &m [i][j]);

}

}

}

'

void PrintMatrix (int m [][N], int n)

{

int i, j;

for (i = 0; i < n; i++)

{

for (j = 0; j < n-1; j++)

{

printf ("%d\t", m [i][j]);

}

printf ("%d", m [i][n - 1]);

)

printf ("\n");

}

}

void Transpose (int m [][N], int n)

{

int i, j;

int temp;

for (i = 0; i < n; i++)

{

for (j = 0; j < i; j++)

{

temp = m [i][j];

m [i][j] = m [j][i];

m [j][i] = temp;

}

}

}

从键盘任意输入一个字符串(字符串可以有空格),

在给定的一组字符串中寻找该输入字符串,若找到,则打印该字符串,否则打印"Not find!"。

注意:

(1)请提交修改正确后的完整源程序代码。(2)对于没有错误的语句,请不要修改

#include <>

#include <>

main()

{

int i, findFlag = 1;

char x;

char str[][13]={ "Pascal","Basic","Fortran", "Java","Visual C", "Visual Basic" };

printf("Input string:\n");

gets(x);

while (i<6 && !findFlag)

{

if (x=str[i])

{

findFlag = 0;

}

i++;

}

if (!findFlag)

{

printf("%s\n",x);

}

else

{

printf("Not find!\n");

}

}

#include <>

#include <>

int main()

{

int i = 0, f = 1;

char m [13];

char

str[][13]={ "Pascal","Basic","Fortran", "Java","Visual C", "Visual Basic" };

printf("Input string:\n");

gets(m);

while (i<6 && f == 1)

{

if (strcmp (m, str [i]) == 0)

{

f = 0;

}

i++;

}

if (f == 0)

{

printf("%s\n",m);

}

else

{

printf("Not find!\n");

}

return 0;

}

相关主题