文档库 最新最全的文档下载
当前位置:文档库 › 哈工大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=3.14159,编程从键盘输入圆的半径r,计算并输出圆的周长和面积。输出的数据保留两位小数点。输入格式要求:"%lf"

提示信息:"Input r:"

输出格式要求:

"printf WITHOUT width or precision specifications:\n"

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

"printf WITH width and precision specifications:\n"

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

程序运行示例如下:

Input r:5.3

printf WITHOUT width or precision specifications:

circumference = 33.300854, area = 88.247263 printf WITH width and precision specifications:

circumference = 33.30, area = 88.25

#include

int main()

{

const double PI=3.14159;

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 = %7.2f, area = %7.2f\n",2*PI*r,PI*r*r);

return 0;

}

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

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

输入格式要求:"%lf"

提示信息:"Please input fahr: "

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

#include

#include

int main()

{

double f;

double c;

printf("Please input fahr: ");

scanf("%lf",&f);

c=5.0*(f-32.0)/9.0;

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*Di git[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 you?Hello!#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;

}

哈工大c语言 练习题

求用户输入得两个数得商,程序运行时,以如下格式输入数据: Input twointegers:42↙ 请改正程序中得错误,使它能得出正确得结果。 #include<stdio、h> main() { inta, b, c; printf("Input two integers:"); scanf("%d,%d",&a, &b); c= a\b; printf("Thequotient ofaandbis:%d", c); } #include〈stdio.h> int main() { ?inta,b,c; printf("Inputtwointegers:"); scanf ("%d%d",&a,&b); ?c=a/b; printf(”The quotient of a and b is:%d\n”,c); ?return 0; } 使用const常量定义圆周率pi=3、14159,编程从键盘输入圆得半径r,计算并输出圆得周长与面积。输出得数据保留两位小数点。输入格式要求:”%lf" 提示信息:”Input r:” 输出格式要求: "printf WITHOUT width or precision specifications:\n" "circumference = %f, area= %f\n”"printf WITHwidth and precision specifications:\n" "circumference=%7、2f, area = %7。2f\n” 程序运行示例如下: Input r:5。3 printf WITHOUT width or precision specifications: circumference =33、300854,are a=88.247263 printf WITHwidthand precision specifications: circumference = 33。30, area = 88、25 #include〈stdio。h> int main() { const double PI=3.14159; double r; printf(”Inputr:"); scanf("%lf”, &r); printf("printf WITHOUT width orprecision specification s:\n"); printf("circumference = %f, area= %f\n",2*PI*r,PI*r*r); printf("printf WITHwidth and precisionspecifications:\n”); ?printf("circumference=%7.2f, area =%7、2f\n",2*PI*r,PI*r*r); return 0; } 写一个程序,将接收得华氏温度转换为对应得摄氏温度。程序应显示如下得提示信息: Please inputfahr: 然后输入一个十进制数并回车,然后程序以合适得消息形式输出转换后得华氏温度。程序使用如下得公式完成转换:摄氏温度= 5.0 *(华氏温度–32.0)/ 9.0 输入格式要求:"%lf" 提示信息:"Pleaseinput fahr: ” 输出格式要求:"Thecelsis: %.2f" #include <stdio。h〉 #include<stdlib.h> int main() { doublef; double c; printf(”Please input fahr: "); scanf("%lf",&f); c=5、0*(f-32.0)/9.0; printf("Thecels is: %、2f”,c);

哈工大C语言课程设计

H a r b i n I n s t i t u t e o f T e c h n o l o g y 课程设计说明书(论文) 课程名称:C语言课程设计 设计题目:音乐程序与波特图 院系:航天学院控制科学与工程系 班级: 设计者: 学号: 指导教师: 设计时间: 哈尔滨工业大学教务处 哈尔滨工业大学课程设计任务书

题目一 1.1题目详细描述: 播放音乐程序,实现了自选音乐曲目和直接使用键盘弹奏,而且可以在曲目播放结束后循环选择乐曲。 1.2程序设计思路及流程图: 1.3 #include #include #include #include #include #include #define N1 16 #define N2 8 #define N4 4 #define N8 2 #define N16 1 #define END 0 void playmusic(int n,int *c); void typemusic(); enum NOTES{ C10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247,

C0=262,D0=296,E0=330,F0=349,G0=392,A0=440,B0=494, C1=523,D1=587,E1=659,F1=698,G1=784,A1=880,B1=988, C2=1047,D2=1175,E2=1319,F2=1397,G2=1568,A2=1760,B2=1976,S=10 }; typedef enum NOTES SONG; SONG song1[]={C0,N4+N2,E0,N4,G0,N2,G0,N2,A0,N1,G0,N1,E0,N4+N2, C0,N4,G0,N1/3,G0,N1/3,G0,N1/3,E0,N1,C0,N1,G10,N1/3,G10,N1/3, G10,N1/3,G10,N1/3,G10,N1/3,G10,N1/3,C0,N1,END,END}; SONG song2[]={A0,N2,B0,N2,C1,N1+N2,B0,N2,C1,N1,E1,N1,B0,N1+N1,S,N1,E0,N1, A0,N1+N2,G0,N2,A0,N1,C1,N1,G0,N1+N1,S,N1,E0,N2,E0,N2,F0, N1+N2,E0,N2,F0,N1,C0,N1,E0,N1+N1,S,N1,C1,N2,C1,N2,B0,N1+N2,370, N2,F0,N1,B0,N1,B0,N1+N2,S,N1,A0,N2,B0,N2,C1,N1+N2,B0,N2,C1,N1, E1,N1,B0,N1+N2,END,END}; int main() { int m,n,c=1; char b='y'; while(b=='y') { printf("Hello,what do you want to do by this program?\n"); printf("1.Listen to music.-------Press 1\n"); printf("2.Play music by yourself.-------Press 2\n"); scanf("%d",&m); while(m!=1&&m!=2&&m!=3) /*选择方式*/ { printf("You typed wrong!Do not push me around.:(\n"); scanf("%d",&m); } if(m==1) { printf("I have two musics,choose one!(Press 1/2)\n"); scanf("%d",&n); while(n!=1&&n!=2) { printf("You typed wrong!Do not push me around.:(\n"); scanf("%d",&n); } playmusic(n,&c); } else if(m==2) { typemusic(); } getchar(); printf("Do you want to continue?(y/n)\n"); scanf("%c",&b);

哈工大C语言实验题

Q308.(10分)第5章实验2:体型判断。 医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。体指数计算公式是: t = w /(h*h) 其中:t是体指数;w是体重,其单位为千克;h是身高,其单位为米。根据给定的体指数t计算公式,可判断你的体重属于何种类型: 当t<18 时,为低体重; 当18≤t<25 时,为正常体重; 当25≤t<27 时,为超重体重; 当t≥27 时,为肥胖。 ****输入提示信息格式:"Please enter h,w:\n" ****输入数据格式要求:"%f,%f"(先读入身高,再读入体重,身高以米读入,体重以千克读入) ****输出数据格式要求: 当t<18 时,输出:"Lower weight!\n" 当18≤t<25 时,输出:"Standard weight!\n"

当25≤t<27 时,输出:"Higher weight!\n" 当t≥27 时,输出:"Too fat!\n" #include #include main() { float t,w,h; printf("Please enter h,w:\n"); scanf("%f,%f",&h,&w); t = w/(h*h); if(t<18) printf("Lower weight!\n"); else if(t>=18&&t<25) printf("Standard weight!\n"); else if(t>=25&&t<27) printf("Higher weight!\n");

哈工大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;

哈工大C语言程序设计习题ex6

习题6 6.3 阅读程序,按要求在空白处填写适当地表达式或语句,使程序完整并符合题目要求. (1)下面程序模拟了骰子地6000次投掷,用rand函数产生1~6之间地随机数face,然后统计1~6每一面出现地机会(概率)存放到数组frequency中. (2)从键盘输入10个整型数据,放入数组a 中,求其最大值、最小值及其所在元素地下标位置,并输出. (3)下面程序地功能是从键盘输入一行字符,统计其中有多少单词.假设单词之间以空格分开. (4)下面地函数Squeeze(char s[],char c)地功能是删除字符串s中所出现地与变量c相同地字符. (5)下面地函数MyStrcmp()用于实现函数strcmp()地功能,将两个字符串s和t进行比较,然后将两个字符串中第一个不相同字符地ASCII码值之差作为函数值返回. 6.4 编程实现从键盘任意输入20个整数,统计非负数个数,并计算非负数之和. 6.5 从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数地位置对换后,再输出调整后地数组. 6.6 输入5×5阶地矩阵,编程实现: (1)求两条对角线上地各元素之和. (2)求两条对角线上行、列下标均为偶数地各元素之积. 6.7 编程打印如下形式地杨辉三角形. 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 6.8 编程将下列矩阵中地元素向右移动一列,最右一列移至第一列. 1 4 6 8 10 12 6.9 利用公式c ij=a ij+b ij计算m×n阶矩阵A和m×n阶矩阵B之和.已知a ij为矩阵A地元素,

b ij 为矩阵B 地元素, c ij 为矩阵C 地元素(i =1,2,…,m ;j =1,2,…,n ).*6.10 利用公式c ij =∑=n k ik a 1 *b kj 计算矩阵A 和矩阵B 之积.已知a ij 为m ×n 阶矩阵A 地元素 (i =1,2,…,m ;j =1,2,…,n ),b ij 为n ×m 阶矩阵B 地元素(i =1,2,…,n ;j =1,2,…,m ),c ij 为m ×m 阶矩阵C 地元素(i =1,2,…,m ;j =1,2,…,m ).6.11 输入一行字符,统计其中地英文字符、数字字符、空格和其他字符地个数. 6.12 编写一个函数Inverse(),实现将字符数组中地字符串逆序存放地功能. 6.13 不用函数strcat(),编程实现字符串连接函数strcat()地功能,将字符串srcStr 连接到字符串dstStr 地尾部.

大学MOOC哈工大C语言程序设计精髓第六周编程题答案

大学M O O C哈工大C语言程序设计精髓第六周 编程题答案 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出?Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。 #include<> #include <> int main() { char score[100]; int flag = 0, i, s; char grade; printf("Please input score:\n"); while (1) { flag=0; scanf("%s", score); for (i = 0; i < strlen(score); i++) { if (score[i] >= '0' && score[i] <= '9') { continue;

} else { flag = 1; break; } } s = atoi(score); if (s < 0 || s > 100 || flag == 1) { printf("Input error!\n"); printf("Please input score:\n"); continue; } else{ break; } } s = atoi(score); if (s >= 90) {

哈工大C语言2015年试卷

哈工大二〇一五年春季学期 C 语言与数据结构 试 题 题号 一 二 三 四 五 六 七 八 九 十 十一 十二 总分 分数 学号 姓名 一、填空题。(每题2分,共14分) 1.列举出三种逻辑运算符_____、_____、_____。 2.多分支选择语句中switch 后面括号的表达式的值的类型应为___________。 3.以有符号的十进制整数形式输入变量a ,则该语句为______________________。 4.初始化二维数组 int a[2][3]; 则*a 表示____________________。 5.for(i=1,sum=0;i<100;i++) sum=sum+i;该语句运行结束后,sum 的值为_____。 6.C 语言规定标识符的第一个字符必须为_________或_________。 7.定义结构体变量如下:struct stu student1,*p ;则引用结构体成员num 的方法多种,请写出任意两种_______________________________ ____________________________________________________________________。 二、画出三种基本结构的流程图 (6分)

三、在二维数组中,若某一位置上的元素在该行中最小,而在该列中最大,则该元素即为该二维数组的鞍点。要求输入一个二维数组,当鞍点存在时,把鞍点找出来并输出。(10分)

四、有一个函数: 5(0)21(08)4(8)x x y x x x x

中国大学MOOC 哈工大 C语言程序设计精髓第六周编程题答案

6.1 下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。 #include #include int main() { char score[100]; int flag = 0, i, s; char grade; printf("Please input score:\n"); while (1) { flag=0; scanf("%s", score); for (i = 0; i < strlen(score); i++) { if (score[i] >= '0' && score[i] <= '9') { continue; } else { flag = 1; break; } } s = atoi(score); if (s < 0 || s > 100 || flag == 1) { printf("Input error!\n"); printf("Please input score:\n"); continue; } else{ break; } } s = atoi(score); if (s >= 90)

grade = 'A'; } else if (s >= 80) { grade = 'B'; } else if (s >= 70) { grade = 'C'; } else if (s >= 60) { grade = 'D'; } else { grade = 'E'; } printf("grade: %c\n", grade); return 0; } 6.2 编程计算a+aa+aaa+…+aa…a(n个a)的值(4分) 题目内容: 编程计算a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。例如,当n=4,a=2,表示计算2+22+222+2222的值。 #include #include int main() { int n,a,i,j; double p=0,q=0; printf("Input a,n:\n"); scanf( "%d,%d",&a,&n); for(i=1;i<=n;i++) { for(j=0,p=0;j

哈工大C语言实验题

哈工大C语言实验题

————————————————————————————————作者:————————————————————————————————日期: ?

Q308.(10分)第5章实验2:体型判断。 医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。体指数计算公式是: t = w/(h*h) 其中:t是体指数;w是体重,其单位为千克;h是身高,其单位为米。根据给定的体指数t计算公式,可判断你的体重属于何种类型: 当t<18时,为低体重; 当18≤t<25 时,为正常体重; 当25≤t<27 时,为超重体重; 当t≥27 时,为肥胖。 ****输入提示信息格式:"Please enter h,w:\n" ****输入数据格式要求:"%f,%f"(先读入身高,再读入体重,身高以米读入,体重以千克读入) ****输出数据格式要求: 当 t<18 时,输出:"Lower weight!\n" 当18≤t<25 时,输出:"Standard weight!\n" 当25≤t<27时,输出:"Higher weight!\n" 当t≥27 时, 输出:"Too fat!\n" #include main() {

float t,w,h; printf("Please enter h,w:\n"); scanf("%f,%f",&h,&w); t = w/(h*h); if(t<18) printf("Lower weight!\n"); else if(t>=18&&t<25) printf("Standardweight!\n"); else if(t>=25&&t<27) printf("Higher weight!\n"); else printf("Too fat!\n"); return 0; }

哈工大 C语言程序设计精髓 MOOC慕课 6-12周编程题答案

6.1 "/*下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。 */ #include #include int main() { char score[100]; int flag = 0, i, s; char grade; printf(""Please input score:\n""); while (1) { flag=0; scanf(""%s"", score); for (i = 0; i < strlen(score); i++) { if (score[i] >= '0' && score[i] <= '9') {

continue; } else { flag = 1; break; } } s = atoi(score); if (s < 0 || s > 100 || flag == 1) { printf(""Input error!\n""); printf(""Please input score:\n""); continue; } else{ break; } } s = atoi(score);

if (s >= 90) { grade = 'A'; } else if (s >= 80) { grade = 'B'; } else if (s >= 70) { grade = 'C'; } else if (s >= 60) { grade = 'D'; } else { grade = 'E'; } printf(""grade: %c\n"", grade);

哈工大C语言实验题完整版

哈工大C语言实验题标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]

Q308.(10分)第5章实验2:体型判断。 医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。体指数计算公式是: t = w /(h*h) 其中:t是体指数;w是体重,其单位为千克;h是身高,其单位为米。根据给定的体指数t计算公式,可判断你的体重属于何种类型: 当 t<18 时,为低体重; 当18≤t<25 时,为正常体重; 当25≤t<27 时,为超重体重; 当t≥27 时,为肥胖。 ****输入提示信息格式:"Please enter h,w:\n" ****输入数据格式要求:"%f,%f"(先读入身高,再读入体重,身高以米读入,体重以千克读入) ****输出数据格式要求: 当 t<18 时,输出:"Lower weight!\n" 当18≤t<25 时,输出:"Standard weight!\n" 当25≤t<27 时,输出:"Higher weight!\n" 当t≥27 时,输出:"Too fat!\n" #include #include

main() { float t,w,h; printf("Please enter h,w:\n"); scanf("%f,%f",&h,&w); t = w/(h*h); if(t<18) printf("Lower weight!\n"); else if(t>=18&&t<25) printf("Standard weight!\n"); else if(t>=25&&t<27) printf("Higher weight!\n"); else printf("Too fat!\n"); return 0; }

哈工大计算机复试C语言复习笔记

哈工大计算机专业考研复试 C语言复习笔记 参考资料:C语言程序设计第三版(苏小红),高等教育出版社C语言程序设计学习指导(苏小红),高等教育出版社 适合于有一定C语言基础的学者 编译环境:CodeBlocks 2018年2月28日

目录 哈工大计算机专业考研复试C语言复习笔记 (1) 第一章为什么要学C语言 (3) 第二章C语言数据类型 (3) 第三章简单的算术运算和表达式 (4) 第四章键盘输入和屏幕输出 (5) 第五章选择控制结构 (6) 第六章循环控制结构 (8) 第七章函数 (9) 第八章数组 (9)

第一章为什么要学C语言 不为什么,因为考试要考。 第二章C语言数据类型 C语言标识符命名规则 只能以英文字母、数字、下划线组成; 必须以字母、下划线开头; 不允许使用关键字命名; 有最大长度限制。 Sizeof的使用,返回数组的总大小,从下面的程序可以看出在32位系统中,一个char类型字符占1字节,int和float占4字节,double占8字节。在16位系统中,int类型占两个字节。 这个现象非常奇妙,区分C++中两种声明字符串的方法。 Char c[] = “hello world”;语句以字符数组的形式存储字符串,sizeof(c)返回的是该字符数组中包括’\0’的所有字符个数,这种声明方式下要获取字符串长度要用strlen() [其实可以理解为C 语言的方式]; String s = “hello”;语句可以理解为类似于链表的声明结构,s只代表该字符串的起始单元地址,故sizeof(s)只有4个字节,这种声明方式下获取字符串长度要用.length() [其实可以理解为C++的方式,对象引用]; strlen()与length()的适用对象不能互换,strlen()要引用头文件string.h。 对于其他类型数组,想要获取数组长度,下面的语句是最快的方式: Int len = sizeof(array) / sizeof(ElemType);

哈工大c语言程序设计精髓mooc慕课6-12周编程题答案

"/*下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。 */ #include<> #include <> int main() { char score[100]; int flag = 0, i, s; char grade; printf(""Please input score:\n""); while (1)

{ flag=0; scanf(""%s"", score); for (i = 0; i < strlen(score); i++) { if (score[i] >= '0' && score[i] <= '9') { continue; } else { flag = 1; break; } }

s = atoi(score); if (s < 0 || s > 100 || flag == 1) { printf(""Input error!\n""); printf(""Please input score:\n""); continue; } else{ break; } } s = atoi(score); if (s >= 90) {

grade = 'A'; } else if (s >= 80) { grade = 'B'; } else if (s >= 70) { grade = 'C'; } else if (s >= 60) { grade = 'D'; } else

哈工大 C语言实验报告(答案)

实验1简单C 程序设计2、将下列由程序流程图描述的算法,转换为C 源代码并填写到图1-3b 框中,然后输入计算机并运行后并分析其运行结果(本小题2分)。 图1-3a 程序流程图 图1-3b C 源程序3、项目编程(本小题12分) (1)请向计算机输入a,b,c 三个值,经过程序处理后,要求输出其中最大的一个。 /*C 语言源代码*/ main() { }

项目要求:①画出程序流程图;②根据流程图编写程序 图1-4a 程序流程图图1-4b C 源程序 (2)请向计算机输入a,b,c 三个值,经过程序处理后,要求按值从小到大输出。 项目要求:①画出程序流程图;② 根据流程图编写程序/*输出最大值*/ main() { }

项目提示:①可采用if结构;②a,b,c由scanf函数输入程序流程图/*将a,b,c三个值由小到大输出*/ main() { } 1-5a程序流程图图1-5b C源程序 (3)编程实现打印下列由字母组成的树形。 说明:本项目编程的知识点是让学生对双 重循环语句结构的理解,清楚双重循环的特点 (即当外循环变量中的值变化一次时,则内循 环变量中的值要变化若干次)。 提示:可用外循环变量代表行数;内循环

变量代表需打印字符的个数。 难点:①字符个数是按奇数变化递增 ②左右边界字符打印的位置 图1-6a字母A-G组成的树形 /*打印图形*/ main() { } 图1-6b C源程序 (4)设计报选体育科目统计程序 设某学校在新生入学时,需报选体育选修科目。体育科目包括:篮球、排球、体操、兵乓球和网球。请为某班级(30人)统计报选各体育科目人数。 项目要求:①画出程序流程图;②根据流程图编写源程序

哈工大C语言试题

哈尔滨工业大学(威海)2008/2009秋季学期 C 语言程序设计 笔试试题(A 卷) 题号 一 二 三 四 五 六 笔试(70%) 平时 (30%) 总分 分数 试卷说明: 1. 卷面总分100分,取卷面成绩的70%计入总分; 2. 选择题、填空题与写运行结果题必须在答题卡内答题; 3. 答题时禁止拆开试卷钉,背面即为草稿纸; 4. 答题时间105分钟。 一、单项选择题(本题16分,每小题2分) 题号 1 2 3 4 5 6 7 8 答案 C D C D C C D B 1. C 语言源程序文件经过C 编译程序编译连接之后生成一个后缀为______的文件。 A) .c B) .obj C) .exe D) .cpp 2. 表达式 !(x>0||y>0) 等价于_____。 A) !x>0||!y>0 B) !(x>0)||!(y>0) C)!x>0&&!y>0 D) !(x>0)&&!(y>0) 3. 已知函数的调用形式:fread(buffer, size, count, fp); 其中buffer 代表的 是( )。 A) 一个整型变量,代表要读入的数据项总数 B) 一个文件指针,指向要读入的文件 C) 一个指针,指向要存放读入数据的地址 D) 一个存储区,存放要读入的数据项 4. 以下不能正确定义二维数组的选项是 A) int a[2][2]={{1},{2}}; B) int a[][2]={1,2,3,4}; C) int a[2][2]={{1},2,3}; D) int a[2][]={{1,2},{3,4}}; 5. 以下程序的输出结果是 _____。 main() { char ch[3][5]={"AAAA","BBB","CC"}; printf("\"%s\"\n",ch[1]); } A) \"AAAA\" B) \"BBB\" C) "BBB" D) "AAAA" 号 学 名 姓 教研室主任签字: 注意行为规范 遵守考试纪律

哈工大C语言试题

精品文档哈尔滨工业大学(威海)2008/2009秋季学期笔试试题(A 卷)C语言程序设计 计入总分;70%试卷说明:1. 卷面总分100分,取卷面成绩的 2. 选择 题、填空题与写运行结果题必须在答题卡内答题; 3. 答题时禁止拆开试卷钉,背面即为草稿纸; 分钟。4. 答题时间105 2分)一、单项选择题(本题16分,每小题

注的文编译程序编译连接之后生成一个后缀为______1. C语言源程序文件经过C意件。行D) .cpp C) .exe B) .obj A) .c 为。!(x>0||y>0) 等价于_____2. 表达式规D) !(x>0)&&!(y>0) B) !(x>0)||!(y>0) C)!x>0&&!y>0 A) !x>0||!y>0 范其中buffer代表的3. 已知函数的调用形式:fread(buffer, size, count, fp); )。是( A) 一个整型变量,代表要读入的数据项总数遵B) 一个文件指针,指向要读入的文件守一个指针,指向要存放读入数据的地址C) 考一个存储区,存放要读入的数据项D) 试以下不能正确定义二维数组的选项是4. 纪 a[][2]={1,2,3,4}; B) int }; A) int 律4}}; D) int a[2][2]={{1},2,3}; C) int 5. 以下程序的输出结果是_____。 main() { char ch[3][5]={AAAA,BBB,CC}; 教研室主任签字:printf(\\%s\\ ,ch[1]); } A) \AAAA\ B) \BBB\ C) BBB D) AAAA 精品文档. 精品文档 6. 对y在[3,23]和[100,200]范围内为真的确表达式为_____。 A) (y>=3)&&(y<=23)&&(y>=100)&&(y<=200) B) (y>=3)||(y<=23)||(y>=100)||(y<=200) C) (y>=3)&&(y<=23)||(y>=100)&&(y<=200) D) (y>=3)||(y<=23)&&(y>=100)||(y<=200) 7. 设有如下结构定义: struct addr { char name[30]; char street[40]; char city[20]; char office[30]; char phone[10]; int age;

哈工大C语言程序设计作业

1、用函数编程实现两个数组中对应该元素值的交换(数组的长度定义成5)。Output array a: 1 2 3 4 5 Output array b: 6 7 8 9 10 #include #include void Exchange(int a[],int b[]); int main() { int i ,a[5],b[5]; for (i=0;i<5;i++) scanf("%5d",&a[i]); for (i=0;i<5;i++) scanf("%5d",&b[i]); Exchange(a[i],b[i]); for (i=0;i<5;i++) printf("%5d",a[i]); printf("\n"); for (i=0;i<5;i++) printf("%5d",b[i]); printf("\n"); return 0; } void Exchange(int a[],int b[]) { int temp,i; for (i=0;i<5;i++) { temp=a[i]; a[i]=b[i]; b[i]=temp; } } 2、从键盘任意输入10个整数,将其中最大数与最小数的位置对换,然后输出对换后的10个数。[提示:用一维数组存放这10个数] 输入要求: "%d", 输入的数据用空格作分隔符。详见输入样例。 输出要求: "%d ",输出的数据用空格作分隔符。详见输出样例。 输入输出样例: 输入:2 10 4 3 5 6 7 8 1 9 输出:2 1 4 3 5 6 7 8 10 9 输入:1 6 2 3 4 5 9 7 8 10 输出: 10 6 2 3 4 5 9 7 8 1 #include #include void Exchange (int a[],int n); int FindMax(int s[],int n); int FindMin(int s[],int n); int main() { int i ,a[10]; for (i=0;i<10;i++) {

哈工大计算机考研复试c语言上机试题及答案

哈工大计算机考研复试c语言上机试题及答案2012年: 题目描述: 一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每 天给你10 万元,你第一天给我1 分钱,第二天2 分钱, 第三天4 分钱…… 这样交换 30 天后,百万富翁交出了多少钱?陌生人交出了多少钱?,注意一个是万 元,一个是分, 输入: 该题没有输入 输出: 输出两个整数,分别代表百万富翁交出的钱和陌生人交出的钱,富翁交出的钱以万元 作单位,陌生人交出的钱以分作单位。 参考答案: #include #include void main() { int sum_a=0, per_day_1=10; //富人总共得到的money long sum_b=0, per_day_2=1; int i ; for(i=0; i<30; i++)

{ sum_a+=per_day_1; sum_b+=per_day_2; per_day_2 *= 2; } printf("%d %ld\n",sum_a,sum_b); } 题目描述: 不用strcat 函数,自己编写一个字符串链接函数MyStrcat(char dstStr[],charsrcStr[]) 输入: 两个字符串,字符串由小写字母组成。 输出: 链接后的字符串 样例输入: hello world good morning 样例输出: helloworld goodmorning 参考答案: #include #include void MyStrCat(char dstStr[], char srcStr[]) {

哈尔滨工业大学2018年计算机科学与技术学院《C语言程序设计》考试大纲

哈尔滨工业大学2018年计算机科学与技术学院《C语言程序设计》 考试大纲 一、考试要求 要求考生掌握用计算机处理问题的思维方法,掌握C语言的基本语法、基本控制结构、常用的算法、问题求解方法和程序设计方法,具备综合运用所学知识独立解决与计算相关的工程技术问题的程序设计、实现和调试能力。 二、考试内容 1)问题的抽象、建模和算法描述 a:算法的基本概念 b:算法的流程图描述方法 2)基本控制结构 a:选择结构的三种控制方式(单分支、双分支、多分支) b:循环结构的三种控制方式(计数控制、条件控制和标记控制的循环) c:流程转移控制的基本方法 d:基本控制结构的嵌套 3)函数和常用的问题求解方法 a:函数定义,函数调用,函数原型,函数的参数传递,防御式编程 b:分治与递归,函数的递归调用,递归函数的设计方法 c:枚举(即穷举) d:递推(正向递推、反向逆推) 4)数组和常用的算法 a:一维数组和二维数组的定义、初始化和引用 b:一维数组、二维数组做函数参数向函数传递一维数组和二维数组 c:字符数组或字符指针做函数参数向函数传递字符串 d:常用的字符串处理操作(字符串的复制、连接、比较、计算长度、插入字符、删除字符、精确匹配等) e:常用的排序算法(选择排序、交换排序、冒泡排序) f:常用的查找算法(顺序查找、折半查找) 5)指针 a:指针变量的定义、初始化和解引用 b:指针变量做函数参数

c:指针数组 d:函数指针 6)结构体和共用体 a:结构体变量、结构体数组和结构体指针的定义和初始化,结构体成员和嵌套的结构体成员的访问b:结构体变量、结构体数组或结构体指针做函数参数向函数传递结构体 c:共用体类型 d:结构体和共用体占内存的字节数,内存对齐 e:动态内存分配函数和动态数据结构,单向链表的基本操作 7)文件操作 a:文件的打开和关闭 b:二进制文件和文本文件 c:文件的顺序读写 三、试卷题型结构 a:单项选择题(10分) b:写出程序运行结果题(10分) c:程序填空题(10分) d:程序改错题(10分) e:编程题(35分) 四、参考书目 1.苏小红,王宇颖,孙志岗等,C语言程序设计(第3版),高等教育出版社,2015.08 2.苏小红,车万翔,王甜甜,C语言程序设计学习指导(第3版),高等教育出版社,2015.09文章来源:文彦考研

相关文档