c语言enum用法定义HINT32_T,C语言程序设计 ( 第3次 )

int main() { int a[10][5],b[10],i,j; srand(time(NULL)); for(i=0;i<10;i++) for(j=0;j<5;j++) *(a[i]+j)=rand()%100; for(i=0;i<10;i++) { *(b+i)=a[i][0]; for(j=0;j<5;j++) if(*(b+i)

for(j=0;j<5;j++) printf("%4d",a[i][j]); printf("\t%4d\n",b[i]); } return 0; }

解题方案:

评分标准:

2. 参考答案: #include #include #define MAX 1000 enum dig{zero,one,two,three,four,five,six,seven,eight,nine}; int main() { int getline(char *s,int lim); char str[MAX],*p; int counter[10]={0},i; enum dig nu=zero; gets(str); p=str; while(*p)

{ if(*p>='0'&&*p<='9') counter[nu+*p-'0']++; p++; } for(i=0;i<10;i++) printf("%4d",counter[i]); printf("\n"); return 0; }

解题方案:

评分标准:

3. 参考答案: #include int main() { int n,sum=0; for(n=1;n<=1000;n++) if(n%3==0&&n%5==0&&n%7==0) { printf("%5d",n); sum+=n; }

printf("\nsum=%d\n",sum); return 0; }

解题方案:

评分标准:

4. 参考答案:

#include int main() { double c,f; printf("请输入华氏温度数:"); scanf("%lf",&f); c=5.0/9*(f-32); printf("摄氏温度是:%lf\n",c); return 0; }

解题方案:

评分标准:

5. 参考答案: #include int main() { double H(int n,double x); int n; double x; printf("Input x and n:");

scanf("%lf,%d",&x,&n); printf("H(%d,%lf)=%lf\n",n,x,H(n,x)); return 0; } double H(int n,double x) { if(n==0) return 1; else if(n==1) return 2*x; else return 2*x*H(n-1,x)-2*(n-1)*H(n-2,x); }

解题方案:

评分标准:

三、填空题(10分,共 5 题,每小题 2 分)

1. 参考答案: C 解题方案:

评分标准:

2. 参考答案: A 解题方案:

评分标准:

3. 参考答案: ① D ② A

解题方案:

评分标准:

4. 参考答案: ① A ② B

解题方案:

评分标准:

5. 参考答案: D 解题方案:

评分标准:

第3次作业

一、程序阅读题(本大题共50分,共 5 小题,每小题 10 分) 1. #include #define F(x) x*x int main() { double n; n=F(3.5+5)/F(3); printf("n=%.2lf\n",n); return 0; }

2. (写出下面程序执行的结果) #include int main() { int x,b1,b2,b3; x=300; b3=x/100; b2=(x-b3)/100; b1=x%10; x=b1+b2+b3; printf("%d\n",x); return 0; } 3. 写出下面程序执行的结果) #include int main() {

char c,str[]="SSSWILTCH2\2\223WALL"; int k; for(k=2;(c=str[k])!='\0';k++) { switch(c) { case 'A': putchar('a'); continue; case '2': break; case 2: while((c=str[k++])!='\2'&&c!='\0') ; case 'T': putchar('*'); case 'L': continue; default: putchar(c); continue; } putchar('#'); } printf("\n"); return 0; }

4. (写出下面程序执行的结果) #include int main() { char c1='a',c2='b',c3='c',c4='\101',c5='\x4a'; printf("a%c b%c\tc%c\tabc\n",c1,c2,c3); printf("\t\b%c %c\n",c4,c5);

return 0; } 5. (写出下面程序执行的结果) #include int a,b,c,d; int main( ) { void p(int a,int b); printf("%d,%d,%d,%d\n",a,b,c,d); p(a,b); printf("%d,%d,%d,%d\n",a,b,c,d); return 0; } void p(int a,int b) { static int c; a++,b++; c-=1,d+=1; if(a<3) { p(a,b); printf("%d,%d,%d,%d\n",a,b,c,d); } }

二、程序设计题(本大题共40分,共 5 小题,每小题 8 分)

1. 编程序实现功能:将一个10行5列数组a每一行中最大值取出存放到一个一维数组b中,输出数组a和数组b的值,要求所有数组操作通过两种以上的指针方式表示。

2. 编写程序实现功能:分别统计键盘输入流上接收字符串中每种数字字符的个数,要求使用数组表示所有计数器集合,并且在数组的下标表达式中使用枚举型数据。

3. 编程序实现功能:求出在1~1000之间的整数中能同时被

3、

5、7整除的数,输出满足条件的数以及它们的和。

4. 编程序实现华氏温度到摄氏温度的转换,其转换公式是: ,式中f表示华氏温度,c表示摄氏温度。 5. 编写一个递归函数计算Hermite多项式,Hn(x)定义为:

三、填空题(本大题共10分,共 5 小题,每小题 2 分) 1. 下面程序的功能是:求两个实数之和的平方根,请选择合适选项填空完成程序。

#include #include < > int main() { double a,b; scanf("%lf,%lf",&a,&b);

printf("%lf\n",sqrt(a+b)); return 0; } A string.h B stdlib.h C math.h D mathematics.h 2. 下面程序的功能是:挑选输入流中的数字字符按序组成整数(例如输入流为ab3c5g8,获取的整数为358), 请选择合适选项填空完成程序。 #include int main() { char c; int n=0; while((c=getchar())!='\n') if( ) n=n*10+c-'0'; printf("n=%d\n",n); return 0; } A c>='0'&&c<='9' B c>'0'&&c=0&&c<=9

D c>'0'||c

3. 下面程序的功能是:求从键盘输入的3个整数之和。请选择合适选项填空完成程序。

#include int add( ① ); int main() { int a,b,c,sum; printf("?a,b,c: "); scanf("%d,%d,%d",&a,&b,&c); sum=add( ② ); printf("sum=%d\n",sum); return 0; } int add(int a,int b) { return a+b; } A add(a,b),c B a,b,c C int a;int b D int,int 4. 下面程序的功能是:将从键盘上输入的一个字符串数据写入到指定的文件中,然后将其读出进行校验,正确输出OK,错误输出ERROR。请选择合适选项填空完成程序。

#include #include int main() { FILE *fpt ; char str[100],str1[100]="",fn[20]; printf("Input the filename:"); gets(fn);

if((fpt= ① )==NULL) { printf("Can't open file %s\n",fn); return -1; } gets(str); fwrite(str,sizeof(char),strlen(str),fpt); fseek( ② ); fread(str1,sizeof(char),strlen(str),fpt); if(strcmp(str,str1)==0) printf("OK\n"); else printf("ERROR\n"); puts(str1); fclose(fpt); return 0; } A fopen(fn,"w+") B fpt,-1*strlen(str),SEEK_CUR C fpt,-1*strlen(str),SEEK_END D fopen(fn,"r+")) 5. 下面程序的功能是:取出变量a从右端开始的4~7位,存放到变量d中并输出。请选择合适选项填空完成程序。

#include int main() { unsigned short a,b,c,d; a=0x29; b=a>>4; c= ① ; d=b&c; printf("%x\n%x\n",a,d); return 0; } A (~0<<4) B ~(0<<4) C ~(~0>>4) D ~(~0<<4)

答案:

一、程序阅读题(50分,共 5 题,每小题 10 分)

1. 参考答案: n=24.00

解题方案:

评分标准:

2. 参考答案: 5 解题方案:

评分标准:

3. 参考答案: SWI*CH#*Wa

解题方案:

评分标准:

4. 参考答案:

aa bb cc abc A J

解题方案:

评分标准:

5. 参考答案: 0,0,0,0 2,2,-3,3 1,1,-3,3 0,0,0,3

解题方案:

评分标准:

二、程序设计题(40分,共 5 题,每小题 8 分)

1. 参考答案: #include #include #include int main() { int a[10][5],b[10],i,j; srand(time(NULL)); for(i=0;i<10;i++) for(j=0;j<5;j++) *(a[i]+j)=rand()%100; for(i=0;i<10;i++) { *(b+i)=a[i][0]; for(j=0;j<5;j++) if(*(b+i)

for(j=0;j<5;j++) printf("%4d",a[i][j]); printf("\t%4d\n",b[i]); } return 0; }

解题方案:

评分标准:

2. 参考答案: #include #include #define MAX 1000 enum dig{zero,one,two,three,four,five,six,seven,eight,nine}; int main() { int getline(char *s,int lim); char str[MAX],*p; int counter[10]={0},i; enum dig nu=zero; gets(str); p=str; while(*p)

{ if(*p>='0'&&*p<='9') counter[nu+*p-'0']++; p++; } for(i=0;i<10;i++) printf("%4d",counter[i]); printf("\n"); return 0; }

解题方案:

评分标准:

3. 参考答案: #include int main() { int n,sum=0; for(n=1;n<=1000;n++) if(n%3==0&&n%5==0&&n%7==0) { printf("%5d",n); sum+=n; }

printf("\nsum=%d\n",sum); return 0; }

解题方案:

评分标准:

4. 参考答案:

#include int main() { double c,f; printf("请输入华氏温度数:"); scanf("%lf",&f); c=5.0/9*(f-32); printf("摄氏温度是:%lf\n",c); return 0; }

解题方案:

评分标准:

5. 参考答案: #include int main() { double H(int n,double x); int n; double x; printf("Input x and n:");

scanf("%lf,%d",&x,&n); printf("H(%d,%lf)=%lf\n",n,x,H(n,x)); return 0; } double H(int n,double x) { if(n==0) return 1; else if(n==1) return 2*x; else return 2*x*H(n-1,x)-2*(n-1)*H(n-2,x); }

解题方案:

评分标准:

三、填空题(10分,共 5 题,每小题 2 分)

1. 参考答案: C 解题方案:

评分标准:

2. 参考答案: A 解题方案:

评分标准:

3. 参考答案: ① D ② A

解题方案:

评分标准:

4. 参考答案: ① A ② B

解题方案:

评分标准:

5. 参考答案: D 解题方案:

评分标准:

《C 语言程序设计》主要在计算机软件、计算机网络、计算机应用、通信技术、智能电子、电子信息工程、多媒体以及核工程与核技术等专业中开设,是电子信息类、机械类等工科专业的重要专业基础课。

本校从2001至今,每年都开设《C语言程序设计》课程,由于,我校最开始时的特殊情况,主要把重点放在C语言中的各类重点、难点的语法、语义上,使得学生经过比较复杂和痛苦的过程后,对C语言在使用上很难做到自己编写程序。而且很多学生产生了畏惧心理。

2004年,学院成立计算机科学与技术系,为了更好学习和掌握C语言,计算机科学与技术专业和计算机维护专业(计算机应用技术前身)除了开设《C语言程序设计》课程外,在后续一学期还开设了《C语言程序设计课程设计》,使得计算机专业学生编程思想和能力得到了极大提高。

2005年,为了让我院工科学生更好的掌握C语言编程以及通过四川省计算机二级考试,在《C语言程序设计》课程后设置《C语言程序设计课程设计》,极大地提高了学生的动手机会和能力,过级率显著提高!

2007年,依托我校建设精品课程的契机,我们将C语言中的各个知识点进行重新规整,提出适用于三本院校学生的语言设计学习的方法。我们提出,先了解C语言,再学习C语言,再用C语言的思想。即在开始时让学生初步知道C语言,然后引入比较简单的运算符以及基本输入、输出和简单的顺序结构程序设计。通过这样的方式,我们发现,学生在C语言的学习就不会从开始的时候陷入大量难懂的语法、语义和数据结构中。有了以上铺垫再层层进入,最终进入复杂的各类数据结构以及指针等学习。通过以上的内容规整后,教学效果有明显提高。

1. Problem A: Hello world! Description Xiao_ming有两个哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放学回家,父母分别跟他们打招呼。

Input 无

Output 请输出: Hello Da_min, Hello Er_min, Hello Xiao_ming!

Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming!

HINT 请注意换行符

Append Code #includeint main() {

printf("Hello Da_min,\n");

printf("Hello Er_min,\n");

printf("Hello Xiao_ming!\n"); } 2. Problem B: 求圆的面积和周长 Description 从键盘输入圆的半径,求圆的面积和周长,圆周率取3.14。

Input 输入一个浮点型数据,有效数字不会超过十进制的6位。

Output 输出为两行。

第一行为圆的面积,第二行为圆的周长,格式见sample。

Sample Input 3

Sample Output Area: 28.260000 Perimeter: 18.840000

HINT 了解浮点类型的输入、输出和算术运算符

Append Code 法一

#includeint main() { double r,p,s; scanf("%lf",&r); p=2*3.14*r; s=3.14*r*r; printf("Area: %lf\n",s); printf("Perimeter: %lf\n",p); } 法二

#include#define pi 3.14 int main() {

double r;

scanf("%d",&r);

printf("Area: %lf\n",pi*r*r);

printf("Perimeter: %lf\n",2*pi*r);

}

3.

Problem C: 平均值 Description 求3个数的平均值。

Input 输入只有一行,为3个较小的整数。

Output 输出为这3个整数的平均值,保留3位小数。

Sample Input 1 2 3 Sample Output 2.000

HINT 注意除法运算对整型数据和浮点型数据是不一样的。

Append Code #includeint main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%.3lf",(a+b+c)/3.0); }

4. Problem D: 求字符的值 Description 从键盘输入3个字符(不含双字节字符),分别输出每个字符的十进制值(ASCII码)、八进制值和十六进制值。

Input 输入为3个字符。

Output 输出为3行。

每一行为每个字符(对应输入顺序)的十进制、八进制和十六进制值,用空格分隔开。每个输出的值占3个字符,不足3个字符前面补0。

Sample Input 0 A

Sample Output 048 060 030 032 040 020 065 101 041

HINT 了解字符值的存储和整型的关系。

Append Code #includeint main() { char a,b,c; scanf("%c%c%c",&a,&b,&c); printf("%.3d %.3o %.3x\n",a,a,a); printf("%.3d %.3o %.3x\n",b,b,b); printf("%.3d %.3o %.3x\n",c,c,c); }

5.

Problem A: 最简单的程序 Description 输出一行“Hello world!”。

Input 无

Output Hello world!

Sample Input Sample Output Hello world!

HINT Append Code #includeint main() {

printf("Hello world!"); }

6. Problem B: 算术基本运算 Description 计算两整数x和y(0Input 输入只有一行,格式见sample。

Output 输出为多行,按顺序每行输出x,y的和、差、积、商、余数、x的平方和y的三次方,格式见sample

Sample Input x = 11, y = 3

Sample Output x + y : 14 xy : %d\n",x-y);

printf("x * y : %d\n",x*y);

printf("x / y quotient: %d, remainder: %d\n",x/y,x%y);

printf("x ^ 2 : %d\n",x*x);

printf("y ^ 3 : %d\n",y*y*y); } 7. Problem C: 自增自减运算 Description C语言中有自增运算++、自减运算--,并且可以前置和后置。

编写一个程序:对输入的一个整数a,输出a++、a--、++a、--a的值。

Input 一个整数a,a是很小的整数。

Output 输出为5行,第一行为a的值,后面依次为--a、a--、a++、++a的值。

5行输出纵向a要对齐,“:”对齐,“:”前后各一个空格,后面的数值不用对齐。每行行尾都有回车。

Sample Input 0

Sample Output a : 0 --a : -1 a-- : 0 a++ : 0 ++a : 1

HINT Append Code #includeint main() { int a,x; scanf("%d\n",&x); a=x; printf(" a

: %d\n",a); printf("--a

: %d\n",--a); a=x; printf(" a-- : %d\n",a--); a=x; printf(" a++ : %d\n",a++); a=x; printf("++a

: %d\n",++a); }

8. Problem F: 绝对值 Description 求整型数据和浮点型数据的绝对值。

Input 输入两个数,第一个是整数,第二个是浮点数。

Output 输出为两行,第一行为整数的绝对值,第二行为浮点数的绝对值,注意浮点数的绝对值不输出无意义的0。

Sample Input -1 1

Sample Output 1 1

HINT 求绝对值可以用标准库函数来完成,也可以自己判断。注意浮点数的输出格式。求绝对值的函数在哪个头文件?貌似很多人会搞错,包括很多编书的人!

Append Code #include//#includeint main(){

int n;

float m;

scanf("%d%f",&n,&m);

//n=abs(n);

//m=fabs(m);

if(n<0)

{

n=-n;

}

if(m<0)

{

m=-m;

}

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

printf("%g",m);

return 0; }

9. Problem A: 奇数还是偶数? Description 输入一个整数,判读它是奇数还是偶数。

Input 输入只有一行,为一个100以内的正整数。

Output 输出为一行。

若输入为偶数则输出“even”,奇数输出“odd”。 Sample Input 30

Sample Output even

HINT 用整数运算可以解决,练习“?:”表达式。

Append Code #includeint main(){

int n;

scanf("%d",&n);

if(n>=0&&n<=100) {

if(n%2==0)printf("even\n");

else printf("odd\n");

}

return 0; }

10. Problem B: 简单的打折计算 Description 商店规定:消费满n元,可以打八八折。设某件商品标价m元,输入购买的件数x,计算出需要支付的金额(单位:元),精确到分。

Input 输入只有一行,三个整数m、n和x,且0Sample Input 95 300 4

Sample Output 334.40

HINT 了解浮点型的输出控制,注意整型和浮点型混合运算过程中的数据类型转换。

Append Code #includeint main() {

int m,x,n,a;

float b;

scanf("%d%d%d",&m,&n,&x);

0xma=m*x;

if(a>n)

b=0.88*a;

else

b=a;

printf("%.2f\n",b);

}

11. Problem C: 判断闰年 Description 输入一个正整数的年份,判断是否为闰年。

Input 输入只有一行,为一个10000以内的正整数。

Output 输出为一行。

若输入为闰年偶数则输出“Yes”,否则输出“No”。

Sample Input 2010

Sample Output No

HINT 了解逻辑运算符和关系运算符。

Append Code #includeint main() {

int x;

scanf("%d",&x);

if(x>0&&x<10000)

{

if(x%4==0&&x%100!=0)

printf("Yes\n");

else if(x%400==0)

printf("Yes\n");

else

printf("No\n");

}

else

printf("error"); }

12. Problem D: 水仙花数 Description 如果一个三位十进制数等于其各位数字的立方和,则称这个数为水仙花数。如:13+53+33=153。

Input 一个整数x,100<=x<=999。

Output x是水仙花数,则输出“YES”,否则为“NO”。

Sample Input 153

Sample Output YES

HINT Append Code #includeint main() {

int a,b,c,x;

scanf("%d",&x);

a=x/100;

b=x/10%10;

c=x%10;

if(x==a*a*a+b*b*b+c*c*c)

printf("Yes");

else

printf("No"); }

13. Problem E: 三个数比较大小 Description 从键盘上输入0~100之间的三个数,按从小到大的顺序输出。

Input 输入只有一行,为三个整数。

Output 按从小到大输出这三个数。

Sample Input 15 10 20

Sample Output 10 15 20

HINT 用if语句判断各种情况可以解决这个问题。

Append Code #includeint main() {

int a,b,c;

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

if(a>=b)

{

if(b>=c)

printf("%d %d %d\n",c,b,a);

else if(c>=a)

printf("%d %d %d\n",b,a,c);

else

printf("%d %d %d\n",b,c,a);

}

else

{

if(a>=c)

printf("%d %d %d\n",c,a,b);

else if(b>=c)

printf("%d %d %d\n",a,c,b);

else

printf("%d %d %d\n",a,b,c);

} }

14. Problem F: 奇怪的求和之一 Description 给定3个正整数a、b和c,按照如下规则求和: 如果这个数字是偶数,则累加到和中;

如果这个数字是奇数,则将大于该数的最小偶数累加到和中。

Input 三个正整数,均在100以内。

Output 一个和。

Sample Input 2 3 5

Sample Output 12

HINT 如果不会使用分支语句, 可使用条件运算符判断到底将哪个数累积到和中。

Append Code #includeint main() {

int a,b,c;

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

if(a%2!=0)a++;

if(b%2!=0)b++;

if(c%2!=0)c++;

printf("%d\n",a+b+c);

}

15. Problem G: 你过线了吗? Description 经过四年的学习,你决定报考我国著名的“285”高校之一的北青大学,经过认真的复习,残酷的考试,终于知晓了自己的考试成绩,也知道了北青大学的录取分数线,请你编程判断,自己过线了吗? Input 输入有2行,第一行有4个正整数,分别表示三门课程的分数线以及总分分数线。第二行有3个非负整数,分别表示你考的三门课程的成绩。

Output 如果你的三门课程成绩都不低于相应课程的分数线,且你的考试总分也不低于北青大学的总分分数线要求,则输出“congratulations”,否则输出“sorry”。

Sample Input 70 80 70 240 80 80 82

Sample Output congratulations

HINT 如果你不会使用分支语句,同样可以使用条件运算符实现该程序。

Append Code #includeint main() {

int a,b,c,d,e,f,g,h;

scanf("%d %d %d %d\n%d %d %d",&a,&b,&c,&d,&e,&f,&g);

h=e+f+g;

if(e>=a&&f>=b&&g>=c&&h>=d)

printf("congratulations");

else

printf("sorry"); } 16. Problem I: A+B Problem (II) : Input/Output

Practice Description 计算a+b,0<=a,b<1000。

Input 输入的第一行是一个整数N,后面有N对整数a和b,每对a和b占一行,a,b用空格分开。

Output 每行输出一个a+b的和,顺序与输入对应。

Sample Input 2 1 2 10 20

Sample Output 3 30

HINT N给出了测试样例数,用for循环处理方便。

Append Code #include int main() {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值