第一篇:C 语言上机总结报告
C语言
上机实验报告
经过了九周的上机练习,我们算是完成了阶段性的胜利,从书本上枯燥的知识,通过上机练习把他们学以致用,融会贯通;不得不说,上机对于大一不允许带电脑,算得上是对c语言巩固和提高的重要途径了,很多我们不懂得问题,通过敲一下代码就知道可不可以这样了。还有很多格式,看不懂的代码,也都能解决。另外,重要的是通过上机我也拾得了编程的乐趣,链接好的程序就像是我的Baby,一节课生好几个。这是一种莫大的成就感。原来我还可以这样。如果仅是书本上的知识,我很难保证能坚持看下去,因为要把抽象的东西阐述出来,很多时候都是很枯燥的。所以上机便是这样一个辅助的途径。下面是我这九周所积累的一些问题和经验。
1.首先就是书写的问题。到现在我还时不时忘了加分号。这么一个细微的问题有时候会报很多错。其中易犯的便是scanf中&的使用,以及&&逻辑运算符和位运算符不分,==错写=,自定义函数,声明时不加分号,do,while语句while后忘加分号,以及数组不从a[0]开始写,for循环中控制条件用<还是<=,于是就会溢出。
2.printf里格式的问题,想要在数前补0整数可以靠.num而浮点数需要前加0,对于输出无符号16进制数%x,八进制数%o和十进制%u,总是记不住,还有一个比较特别的是可以用*占位,然后在后面的参数中说明精度和宽度,用#让浮点数始终有小数,字符串的5.4s只显示4位。另一个我发现无关紧要的是printf中lf和f没什么区别,scanf却不一样。
3.scanf的另一个问题是当出现空格是,读取的字符串就不完整了,在百度后,我找到了更好的gets函数,便可以读取空格,还有scanf的一一对应特性,不过空格不算。
4.++i和i++的使用问题。很多时候并不在意这些,便会导致数据的溢出,和结果总是偏差1,所以在使用时先得想好用哪个,如int k;
while(k--)
;printf(“%d”,k)结果是-1,因为在while判断过程中还要减1。
5.Define 一个表达式时不爱每一层都加括号。导致运算时优先级使运算和目的不符。我记不下那么多的运算符的优先级,所以我解决的方法便是每个运算都加上括号。
6.总是按照自己的思维做事,像是想把一个数组复制给另一个数组就直接用=赋值了,事实证明并不可行,而是需要用for循环一个一个赋值,而字符串则用strcpy,但结构体却可以直接赋值。
7.条件语句if,while,for等加括号和在哪加括号的的问题,常常因为内容少所以不加括号经常导致错误,尤其在嵌套语句和连续多个条件语句时,总是会出错,所以以后我学会了每句话都加上大括号。并且尽量使格式工整。
8.忘记添加头文件。或者忘了头文件的名字,像是stdlib,malloc…… 这样函数就变得没有了意义。这个得靠记忆和多练。
9.函数要求的实参的格式忘记了,这时候总是会报格式不符,比如malloc.calloc.recalloc,对参数的要求的区别,qsort函数里,compare函数指针参数,compare的实际参数需要强制转换。
10.Switch用法,switch只能用于char和int,且不用break就会一直执行下去,我就会忘掉这个,还有给a加引号
11.数组的声明问题,数组是c语言里比较让人头大的问题了。其中,让我不能理解的便是为什么二维数组不能a[][]={},a[][N]={}而必须至少a[N][]={},这就让我栽过跟头,还有字符数组为什么加’ ’就变成字符串了,当然这都是要求,在声明时需要谨慎再谨慎。
12.指针的运用中,在参数调用和返回也时常出现格式不符,值传递改变不了实参,址传递有时候也改变不了比如返回局部变量的地址,这时就需要static静态变量延长存储时间,而extern在函数中仅是对之前的变量的声明,并不能在其中定义一个外部变量,static也只能定义一次,这类问题时常困扰着我,以为经常不知道错在哪里。另外还有一种方法也能改变指针的地址而改变实参指针的指向,那便是通过双重指针,**p 13.对于指针运用中另外很让人困惑的是二级指针的指向问题,而他们常常又和二维数组结合,例如a,&a[0],a[0],&a[0][0],a[0][0],他们乍一看都分别不出来,需要仔细的考虑,实际上a=&a[0],&*(a[0]+0)=a[0]=&a[0][0],实际上他们都是逐级递增的,例如对*(a[0]+i)就是对确定一行的列的选择,*(a+i)则是对行数的选择,常常用指针指向这一行,然后进行操作,然而经常&a,&a[0]和&a[0][0]却是相同的地址,但他们的跨度却不一样,这样常常在实验的过程中就是对数组格式的写错导致根本不知道哪出的错,也无从修改。所以还是得多理解透彻他们的含义,否则只会在写代码时犯懵。
14.指针运用的另一个问题就是,指针并不具有空间,需要进行空间的开辟,这类问题也常常出现在想要声明一个未知大小的数组,这时候就需要用malloc来开辟了,而malloc还不能放置在main函数体外,经常在scanf后放置。
15.在上机过程中我曾不理解为什么char*p=”ashjkhasljk”可以成功,而已定义的数组a,就不能a=“adfadsad”;char*p,p=”dasaf”可以,但是用scanf输入”dasaf”就不对,查阅资料我才得知,“”表达式的值就是一个地址,p=””,开辟了空间。而scanf直接把址给指针,并没有申请空间。其次程序把字符串放到了常量区,所以不容修改其值,这里的p[0]也不得修改,p开辟了一段常量空间把字符串放进去,其值也不得修改,但可以改变P的指向,所以相当于const char*p 16.关于函数,要记住函数不能嵌套定义,但可以调用。这也是我犯过的错误。
17.结构体的声明和联合还有枚举的声明经常搞混,查书才知道有两种方法来声明结构类型名,一种结构标记,一种typedef,第一种直接可以在其后写变量,另一种需要再换行再声明。还有其后}要加分号会忘,主要是还是对结构名和变量搞不清楚,比如struct student new在实验中出现引用其中的元素不知道是是应该student.new.还是new.除此,不明白Union为什么经常没有标记,直接就是变量。最后便是结构数组的初始化总是掌握的不好,可能因为用的少。
由于没有保留上机报告的原稿,所以以上是我暂时能回忆起来我所遇到的问题和我的想法。
经历了9次的实验我的收获当然不仅仅是这些问题,重要的是编程的思维,不是一上来就立马开始打代码,而是构建一个清晰的流程图就如《上机实验报告》所写,然后逐步实现,有时候有多个函数时需要先写一个大的框架,然后再完善。
另外,还有程序的调试,如果都写在函数里,则,注释部分函数然后进行调试。或者单步调试部分代码,观察值的变化。
总之收获很大就对了!
第二篇:C语言上机练习题
上机练习题
1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。
/* Note:Your choice is C IDE */ #include “stdio.h” main(){ long n;int ww,qw,bw,sw,gw;printf(“Please input:n”);scanf(“%ld”,&n);while(n<=0||n>99999){
printf(“nThe number is 2 little or too large.Retry please!n”);
scanf(“%ld”,&n);} if(n>=10000&&n<=99999){
ww=n/10000;qw=n/1000%10;bw=n/100%10;sw=n/10%10;gw=n%10;printf(“The old number is:%ldn”,n);printf(“The new number is:%d%d%d%d%dn”,gw,sw,bw,qw,ww);} else if(n>=1000&&n<=9999){
qw=n/1000;
bw=n/100%10;
sw=n/10%10;
gw=n%10;
printf(“The old number is:%ldn”,n);printf(“The new number is:%d%d%d%dn”,gw,sw,bw,qw);
} else if(n>=100&&n<=999){
bw=n/100;
sw=n/10%10;
gw=n%10;
printf(“The old number is:%ldn”,n);printf(“The new number is:%d%d%dn”,gw,sw,bw);}
else if(n>=10&&n<=99)
{
sw=n/10;
gw=n%10;
printf(“The old number is:%ldn”,n);
printf(“The new number is:%d%dn”,gw,sw);
}
else printf(“The old number equals the new number:%ld”,n);
}
2.计算1+2+3„+n的值,n是从键
盘输入的自然数。
/* Note:Your choice is C IDE */ #include “stdio.h” main(){
int n,i;long sum=0;
printf(“1+2+3+....+nn”);printf(“Please input n:n”);
scanf(“%d”,&n);for(i=1;i<=n;i++){
sum+=i;
}
printf(“sum=%ld”,sum);}
3.从终端(键盘)读入20个数据
到数组中,统计其中正数的个数,并计算这些正数之和。、/* Note:Your choice is C IDE */ #include “stdio.h” #define N 20 main(){
int a[N],i,sum=0,count=0;printf(“Please input numbers :n”);
for(i=0;i { scanf(“%d”,&a[i]); if(a[i]>0) { sum+=a[i]; count++; } } printf(“count=%d,sum=%d”,count,sum);} 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各元素的值。 /* Note:Your choice is C IDE */ #include “stdio.h” #define N 5 main(){ int a[N],b[N],i;printf(“Please input numbers:n”);for(i=0;i b[N-i-1]=a[i];} printf(“nThe old numbers are:n”);for(i=0;i printf(“%-4d”,a[i]);printf(“nThe new numbers are:n”);for(i=0;i printf(“%-4d”,b[i]);} 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。/* Note:Your choice is C IDE */ #include “stdio.h” main(){ int i,j,k,n;for(i=1;i<=10;i++) for(j=1;j<=25;j++) for(k=1;k<=50;k++) for(n=1;n<=100;n++) if(i*50+j*20+k*10+n*5==500) printf(“num50=%d,num20=%d,num10=%d,num5=%dn”,i,j,k,n);} 6.求n以内(不包括n)同时能被 3和7整除的所有自然数之和的平方根s,n从键盘输入。例如若n为1000时,函数值应为:s=153.909064。 /* Note:Your choice is C IDE */ #include “stdio.h” #include “math.h” main() { int n,s,i;float sum=0;printf(“Please input n:n”); scanf(“%d”,&n);while(n<=0){ printf(“nError input.Retry please:n”); scanf(“%d”,&n);} for(i=1;i if(i%3==0&&i%7==0) sum+=i;printf(“The number is:%4.2f”,sqrt(sum));} 7.一辆卡车违反交通规则,撞人后 逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。/* Note:Your choice is C IDE */ #include “stdio.h” #include “math.h” main(){ int i,qw,bw,sw,gw; for(i=1122;i<=9988;i++){ if(sqrt(i)!=(int)sqrt(i)) continue; qw=i/1000; bw=i/100%10; sw=i/10%10; gw=i%10; if(qw==bw&&sw==gw) { printf(“nThe number is:%dn”,i); break; } } 8.输入1~10之间的一个数字,输出它对应的英文单词。 /* Note:Your choice is C IDE */ #include “stdio.h” main(){ int n;printf(“Please input n:n”);scanf(“%d”,&n);while(n<1||n>10){ printf(“Error input!Retry please:n”); scanf(“%d”,&n);} switch(n){ case 1:printf(“One!”);break; case 2:printf(“Two!”);break; case 3:printf(“Three!”);break; case 4:printf(“Four!”);break; case 5:printf(“Five!”);break; case 6:printf(“Six!”);break; case 7:printf(“Seven!”);break; case 8:printf(“Eight!”);break; case 9:printf(“Nine!”);break; case 10:printf(“Ten!”);break;} } 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? /* Note:Your choice is C IDE */ #include “stdio.h” main(){ int i,count=0; for(i=106;i<596;i=i+10){ if(i%3==0&&i%5!=0) { printf(“%-4d”,i); count++; } } printf(“count=%-4d”,count);} 10.用自然语言描述程序逻辑如下,试写程序。 ① 设置环境; ② 定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③ i=1; ④ 如果i≤100,则转⑤,否则转⑧; ⑤ 令s=0,求前i个自然数之和,并放于变量s之中; ⑥ sum=sum+s; ⑦ i增加1,转④; ⑧ 输出和sum,结束。 /* Note:Your choice is C IDE */ #include “stdio.h” main(){ int i,j; long s=0,sum=0; printf(“1+1+2+1+2+3+1+2+3+4+....1+2+3+..+nn”);i=1; while(i<=3){ s+=i;sum+=s;i++;} printf(“sum=%ld”,sum);} 11.用自然语言描述的程序逻辑为: ① 设置环境; ② 定义变量i、flag和password,并令flag=0,i=0; ③ 用户回答口令,将其赋于password变量; ④ 口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤ 回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥ 根据flag之值输出相应信息。 /* Note:Your choice is C IDE */ #include “stdio.h” #include “string.h” #define N 6 main(){ int i=0,flag=0;char password[N];printf(“The password is:123456n”);while(i<3){ gets(password); if(strlen(password)!=6) { printf(“The string length is wrong!Retry please!n”); i++; continue; } if(strcmp(“123456”,password)==0) {flag=1;break;} else { printf(“Wrong input!Retry please!n”);i++;} } if(flag==1)printf(“Right password!n”);else printf(“Wrong password!n”);} 12.用自然语言描述的程序逻辑如 下: ① 设置环境; ② 定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; ③ 输入原始正整数x; ④ 从x中分解出个位数字digit; ⑤ 合并个位digit至逆数y中; ⑥ 原始数x缩小10倍:x=x/10; ⑦ 如果x非零,则转④; ⑦ 输出逆数y,结束 /* Note:Your choice is C IDE */ #include “stdio.h” main(){ long digit,x,y;/*个位数、原始数、逆数*/ printf(“Please input the old number:n”);scanf(“%ld”,&x);digit=x%10;y=digit;while(x!=0){ x=x/10; digit=x%10; y=y*10+digit;} printf(“x=%ld,y=%ld”,x,y/10);} 13.输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构成)。/* Note:Your choice is C IDE */ #include “stdio.h” main(){ float a,b,c,flag;/*flag=0不能,flag=1等边,flag=2等腰,flag=3任意*/ printf(“Please input angles:n”); scanf(“%f,%f,%f”,&a,&b,&c);if(a+b<=c||a+c<=b||b+c<=a)flag=0;else if(a==b&&b==c)flag=1;else if(a==b||b==c||c==a) flag=2; else flag=3;if(flag==0)printf(“nCan not!n”);if(flag==1)printf(“nDeng Bian.n”);if(flag==2)printf(“nDeng Yao.n”);if(flag==3)printf(“nPu tong.n”);} 14.输入10个数,分别统计其中正数、负数、零的个数。#include “stdio.h” #define N 10 main(){ int a[N];int i,count1=0,count2=0,count3=0;/*count1记录正数个数,count2记录负数个数,count3记录0的个数*/ printf(“Please input numbers:n”);for(i=0;i scanf(“%d”,&a[i]); if(a[i]>0)count1++; if(a[i]<0)count2++; if(a[i]==0)count3++;} printf(“count1=%-4d,count2=%-4d,count3=%-4d”,count1,count2,count3);} 15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100)/* Note:Your choice is C IDE */ #include “stdio.h” #define N 100 #include int a[N],i;printf(“Please input numbers:n”);randomize(); for(i=0;i { a[i]=random(900)+100;printf(“%-4d”,a[i]);} printf(“n--------------------n”); printf(“n3,5,7:n”);for(i=0;i if(a[i]%3==0&&a[i]%5==0&&a[i]%7==0) printf(“%-4d”,a[i]);} 16.用for编程找出100~200中的完 全平方数。 #include “stdio.h” #include “math.h” main(){ int i; for(i=100;i<=200;i++)if(sqrt(i)==i%100) printf(“%-4d”,i);} 17.从终端输入三个正实数,判断这 三个数能否构成直角三角形。#include “stdio.h” main(){ float a,b,c,flag;/*flag=0不能,flag=1能*/ printf(“Please input angles:n”); scanf(“%f,%f,%f”,&a,&b,&c);while(a<=0||b<=0||c<=0){ printf(“Wrong input!Retry please:n”); scanf(“%d,%d,%d”,&a,&b,&c);} if(a+b<=c||b+c<=a||a+c<=b)flag=0;else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b) flag=1; else flag=0;if(flag==1)printf(“nCan!”);else printf(“nCan not!”);} 18.输入一行字符,统计其中有多少个字母(包括大写字母和小写字母)。 /* Note:Your choice is C IDE */ #include “stdio.h” #define N 10 #include “stdlib.h” #include “ctype.h” #include “string.h” main(){ char c[N];int i,count=0;gets(c);i=0;while(i!=strlen(c)){ if(isupper(c[i])||islower(c[i])) count++;i++;} printf(“count=%-4d”,count);getch();} 19.输入一个字串,判断它是否是对称串。如”abcdcba”是对称串,”123456789”不是。 /* Note:Your choice is C IDE */ #include “stdio.h” #include “string.h” #include “ctype.h” #include “stdlib.h” #define N 10 main(){ char a[N],b[N],i; printf(“Please input the string:n”);gets(a); if(strlen(a)>N) { printf(“Wrong input!Retry please!n”); gets(a); } strcpy(b,a);strrev(a); if(strcmp(a,b)==0) printf(“nYes!n”);else printf(“nNo!n”);} 20.随机产生N个大写字母输出,然 后统计其中共有多少个元音字符。(设N为200) /* Note:Your choice is C IDE */ #include “stdio.h” #include int c[N],i,count=0;randomize();for(i=0;i c[i]=random(27)+65;printf(“ %c”,c[i]); if(c[i]=='A'||c[i]=='E'||c[i]=='I'||c[i]=='O'||c[i]=='U')count++;} printf(“n----------------------n”); printf(“ncount=%-4d”,count);} 找出三位自然数中的所有素数,要求判断x素数用自定义函数data(x)实现。 #include “stdio.h” int data(int x);main(){ int i,flag=0;/*1是,0否*/ for(i=101;i<=999;i++){ flag=data(i);if(flag==1)printf(“%-4d”,i);} } int data(int x){ int i;for(i=2;i printf(“n----------------n”); for(i=1;i<=n;i++){ satr(m); printf(“n”);} } void satr(int m){ int i;for(i=1;i<=m;i++) printf(“#”);} 22.若ax2+bx+c=0有实根,则求之。#include “stdio.h” #include “math.h” main(){ int a,b,c; float derta,x1,x2;printf(“Please input a,b,c:n”); printf(“a=”);scanf(“%d”,&a);printf(“b=”); scanf(“%d”,&b);printf(“c=”);scanf(“%d”,&c); derta=b*b-4*a*c;if(derta<0) printf(“NO!n”);if(derta==0) { printf(“One!n”); x1=-b/(2*a); x2=x1; printf(“x=%-4.2f”,x1); } if(derta>0) { printf(“Two!n”); x1=(-b+sqrt(derta))/(2*a); x2=(-b-sqrt(derta))/(2*a);printf(“x1=%-4.2f,x2=%-4.2f”,x1,x2); } } 23.从键盘输入两个字串,判断它们 是否相同。 #include “stdio.h” #include “string.h” #define N 20 main(){ char c1[N],c2[N]; printf(“Please input two string below:n”);gets(c1);gets(c2); printf(“--------------------n”); printf(“The answer is:”);if(strcmp(c1,c2)==0) printf(“Equal!n”); else printf(“Not equal!n”);} 24.从键盘输入两个字串,输出其中较短的那个字串,并输出它的长度。 #define N 20 #include “stdio.h” #include “string.h” main(){ char c1[N],c2[N];printf(“Please input two string below:n”);gets(c1);gets(c2);printf(“--------------------n”);printf(“The answer is:”);if(strlen(c1)==strlen(c2)){ puts(c1); puts(c2); printf(“The length is:%dn”,strlen(c1));} if(strlen(c1) printf(“The length is:%dn”,strlen(c1));} if(strlen(c1)>strlen(c2)){ puts(c2); printf(“The length is:%dn”,strlen(c2));} 25.从键盘输入长度不等的两个字串,将短串连接于长串之后输出。 #include “stdio.h” #include “string.h” #define N 20 main(){char c1[N],c2[N];printf(“Please input two string below:n”);gets(c1);gets(c2);while(strlen(c1)==strlen(c2)){ printf(“Wrong input!Retry please:n”);gets(c1);gets(c2);} printf(“--------------------n”); printf(“The answer is:”);if(strlen(c1) if(strlen(c1)>strlen(c2))puts(strcat(c1,c2));} 26.从键盘输入长度不等的两个字 串,将长串连接于短串之后输出 #include “stdio.h” #include “string.h” #define N 20 main() { char c1[N],c2[N]; printf(“Please input two string below:n”);gets(c1);gets(c2); while(strlen(c1)==strlen(c2)){ printf(“Wrong input!Retry please:n”); gets(c1); gets(c2);} printf(“--------------------n”); printf(“The answer is:”); if(strlen(c1) puts(strcat(c1,c2)); if(strlen(c1)>strlen(c2)) puts(strcat(c2,c1));} 27.随机产生N个两位自然数,降序 排列后输出。(设N为20)#include “stdio.h” #include “stdlib.h” #include “time.h” #define N 20 main() { int a[N],i,j,temp;randomize(); for(i=0;i a[i]=random(900)+100;for(i=0;i for(j=i+1;j if(a[j]>a[i]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=0;i printf(“%-4d”,a[i]);} 28.从键盘输入两个字串,输出其中较长的那个字串,并输出它的长度。 #define N 20 #include “stdio.h” #include “string.h” main(){ char c1[N],c2[N];printf(“Please input two string below:n”);gets(c1);gets(c2);printf(“--------------------n”);printf(“The answer is:”);if(strlen(c1)==strlen(c2)){ puts(c1); puts(c2); printf(“The length is:%dn”,strlen(c1));} if(strlen(c2) printf(“The length is:%dn”,strlen(c1));} if(strlen(c2)>strlen(c1)){ puts(c2); printf(“The length is:%dn”,strlen(c2));} } 29.从键盘输入10个战士的身高,输出平均身高,并找出哪些身高低于平均身高。#include “stdio.h” #define N 11 main() { float a[N],sum=0;int i; printf(“Please input heigths:n”); for(i=0;i scanf(“%f”,&a[i]); sum+=a[i];} a[N-1]=sum/(N-1);printf(“The average is:%-6.2fn”,a[N-1]); printf(“---------------------n”); printf(“The answer are:n”); for(i=0;i printf(“%-8.2f”,a[i]);} 30.从键盘输入10个战士的身高,输出平均身高,并找出哪些身高高于平均身高。#include “stdio.h” #define N 11 main() { float a[N],sum=0;int i; printf(“Please input heigths:n”); for(i=0;i scanf(“%f”,&a[i]); sum+=a[i];} a[N-1]=sum/(N-1);printf(“The average is:%-6.2fn”,a[N-1]); printf(“---------------------n”); printf(“The answer are:n”); for(i=0;i printf(“%-8.2f”,a[i]);} 31.从键盘输入10个战士的身高,输出最高、最低的身高 #include “stdio.h” #define N 10 main(){ float a[N],min=99999,max=-99999;int i;printf(“Please input heigths:n”);for(i=0;i scanf(“%f”,&a[i]); printf(“---------------------n”);for(i=0;i max=a[i];if(a[i] min=a[i];} printf(“max=%-6.2f,min=%-6.2f”,max,min);}。 32.“百钱百鸡”问题。百钱买百鸡,鸡翁一值钱三,鸡母一值钱二,鸡雏三值钱一,问鸡翁、鸡母、鸡雏各几何? #include “stdio.h” main(){ int jw,jm,jc;/*公鸡最多100/3=33只,母鸡最多100/2=50只,小鸡最多300只*/ for(jw=1;jw<=33;jw++) for(jm=1;jm<=50;jm++) for(jc=1;jc<=300;jc++)if(jw*3+jm*2+jc/3==100&&jw+jm+jc==100)printf(“JW=%d,JM=%d,JC=%dn”,jw,jm,jc);} 33.有三个小孩,一个比一个大2岁,已知其年龄之和为39,问这三个小孩各几岁? #include “stdio.h” main(){ int a,b,c; for(a=1;a<=20;a++) for(b=1;b<=20;b++) for(c=1;c<=20;c++) if(a+2==b&&b+2==c&&a+b+c==39) printf(“The ages are:%-4d%-4d%-4d”,a,b,c);} 34.键盘输入长方体的长宽高l、w、h,求其体积及表面积。要求用自定义函数val(l,w,h)计算长方体的体积和表面积,计算结果使用全局变量带回主函数。#include “stdio.h” float l,w,h,v,s; void val(float l,float w,float h);main(){ printf(“Please input l&w&h:n”); printf(“l=”);scanf(“%f”,&l);printf(“w=”);scanf(“%f”,&w);printf(“h=”);scanf(“%f”,&h);val(l,w,h);} void val(float l,float w,float h) { v=l*w*h; s=2*l*w+2*w*h+2*h*l; printf(“v=%-6.2f,s=%-6.2f”,v,s);} 35.计算:1/2+1/4+„„+1/n,设n 是由键盘输入的正偶数。#include “stdio.h” main() { int n,i; float sum=0;printf(“Please input n:n”); scanf(“%d”,&n);while(n%2!=0) { printf(“Wrong input!Try again:n”); scanf(“%d”,&n);} for(i=2;i<=n;i=i+2)sum+=1.0/i;printf(“sum=%-6.2f”,sum); } 36.计算:1/1+1/3+„„+1/n,设n是由键盘输入的正奇数。#include “stdio.h” main(){ int n,i;float sum=0;printf(“Please input n:n”);scanf(“%d”,&n);while(n%2==0){ printf(“Wrong input!Try again:n”); scanf(“%d”,&n);} for(i=1;i<=n;i=i+2)sum+=1.0/i;printf(“sum=%-6.2f”,sum);} 37.计算:1/2-2/3+3/4-4/5„„,前100项。 #include “stdio.h” main(){ int i;float sum=0,d=1;for(i=1;i<100;i++){ sum+=i*d/(i+1); d=-d;} printf(“sum=%-6.2f”,sum);} 38.从终端输入3个数a、b、c,按从大到小的顺序输出 #include “stdio.h” main(){ int i,j,k,l;/*i,j,k,l分别代表甲乙丙丁。1偷0没偷*/ for(i=0;i<=1;i++) for(j=0;j<=1;j++) for(k=0;k<=1;k++) for(l=0;l<=1;l++)if(j+l==1&&j+k==1&&i+j==1&&l==0)} 39.公安人员审问四名窃贼嫌疑犯。 已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:甲说“乙没有偷,是丁偷的”,乙说“我没有偷,是丙偷的”,丙说“甲没有偷,是乙偷的”,丁说“我没有偷”。请根据这四人的答话判断谁是盗窃者。40.求 s=a+aa+aaa+aaaa+......+aa...a的值,其中a是1~9之间的一个数字,表达式项数从键盘输入(设不超过10项)。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 41.设N是一个四位数,它的9倍恰 好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数是4321。 42.爱因斯坦出了一道这样的数学 题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯至少有多少阶? 43.输入任意一行字符,降序排列 之。 44.输入一行字符串,按如下规则加 密:如果是英文字母则大写变小写、小写变大写,对非英文字符则保持不变。试写加密程序。45.输入一行小写英文字母,按如下 规则加密:a→c、b→d、„、x→z、y→a、z→b,试写加密程序。 46.输入一行英文,已知各单词之间 用1个空格相隔(设第一个单词前没有空格),统计这行英文有多少个单词。 47.求1+12+123+„„前n项之和,其中n是从键盘输入的一个数字(1~9)。 48.小学生智商测试。让电脑随机出 十道100以内整数的加法题(10分/题),小学生从键盘回答答案,统计小学生最后得分。49.斐氏数列是公元13世纪数学家斐波拉契发明的。即:1,2,3,5,8,13,21,34,55,89,„„,输出其前15项。 C语言上机实验报告 2160500146 计算机66马俊松 在本学期,共进行了大约五次上机,完成了数十道编程题,现将在完成作业过程中所遇到的问题以及解决过程进行如下几点总结,并提出几点建议。 1.在刚开始那几次做编程作业时,经常因为只是输出时的格式不符合moodle上的要求而的零分,因而不断修改,浪费大量时间,希望今后moodle网站能在这一点上做出改进(如果过程正确而只是输出格式错误,可以不必给零分)。比如下面几个题: 2.在做6.1题(找出一句话中最长的子字符串)的过程中,因为字符数组的知识未掌握牢固,在以下几个方面卡了比较久: ①:字符串在输入时,若用scanf(”%s”,a),则只会得到第一个单词;若用for(i=1;i<=n;i++)scanf(“%c”,a[i]),则循环会一直持续知道输入n个字符;若希望将整句话输入,应用gets(a); ②:将”n”,” ”,” “几个概念搞混淆,因而在条件判断时出现混乱,导致错误。 3.在做7.1题(用函数实现学生的信息录入及排序)时,遇到了以下几个问题并卡了比较久的时间: ①:运用了错误的输入方式,导致未能的到完整的输入信息或输入过程中直接中断(如下图); ②:刚开始时为采用指针的思想,导致在设计程序时比较繁琐;但应注意在使用完指针p++后,应重新给指针p赋回初值; 总的来讲,编程就是不断在错误和调试中找到想自己的的想法完整表达出来,这一学期的上机实践使我的编程能力有了进一步提高。 班级:__________姓名______________学号__________________ 《计算机辅助设计》上机总结报告 一、课程名称:计算机辅助设计 二、上机主要内容: 1.AutoCAD的启动和退出、保存图形(存盘) 2.二维绘图命令:有…… 3.二维修改命令:有…… 4.精确绘图工具:有…… 5.文本标注命令:有…… 6.二维图形绘制:绘制的图形有……(画些图) 7.三维绘图命令:有…… 8.三维修改命令:有…… 9.建立用户坐标系的命令:(并说出常用的选项) 10.三维图形绘制:绘制的图形有……(画些图) 三、收获和体会 …… (用实验报告纸 或 信纸 按此格式书写(不能打印)2页半——3页,要画上几个AutoCAD图) 该报告,上机考试时上交,未交者于考试的次日下午4点前交到信息楼XX219房间——计算机学院办公室 何老师、胡老师。按学校的规定,不交实验报告者,课程总成绩为0分! 一、实验目的 1.能够描述VC++6.0开发平台的使用过程,学会运行一个C程序的基本步骤,包括编辑、编译、链接和运行。 2.能够使用算术表达式和赋值表达式书写正确的语句。3.能够使用输入/输出函数编写简单的程序。 二、实验环境 (调试程序所使用的软硬件环境)软件环境:VC++6.0 硬件环境:宏基 Intel 奔4 主频 2.8GHz,内存256MB 三、实验内容、结果及分析 1、题目1)求华氏温度150°F对应的摄氏温度。计算公式如下: 55cf32 其中:c表示摄氏温度,f表示华氏温度。源程序清单:(调试好的源程序代码)// work1.cpp : Defines the entry point for the console application.// #include “stdafx.h” #include } 主要标识符说明:(源程序中主要标识符含义说明)Double为双精度类型变量名表 实验结果:(程序运行结果)double f,c;cout<<“输入华氏温度,按Enter执行”< 实验中遇到的问题及解决的方法 源代码的粘贴出现乱码 解决:从Cpp文件中粘消除格式。 2、题目 已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。 源程序清单:(调试好的源程序代码)// work2.cpp : Defines the entry point for the console application.// #include “stdafx.h” #include double a,b,c,average;cout<<“请按顺序输入数学、英语、计算机三科成绩。”< 实验中遇到的问题及解决的方法 3、题目 当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。 源程序清单:(调试好的源程序代码)// work3.cpp : Defines the entry point for the console application.// #include “stdafx.h” #include int n,digit1,digit2,digit3;cout<<“请输入一个三位数n(100﹏999)”< //求个位数字 digit2=n/10%10; //求十位数字 digit3=n/100%10; //求百位数字 cout<<“个位数字(digit1)”< 实验中遇到的问题及解决的方法 四、实验体会(心得、收获) C语言对我们来说是一个崭新的学科。我想学习C语言就像学习其他学科一样,需要我们用心的去学习。它也是我们交流的一种新的方式。只不过是人机之间的。随着科学的进步,与社会的发展,计算机显得尤为重要。C语言又是学习计算机的基础,所以我们更应该该好好的学习C语言。通过这节实验课,我们学到了如何运用6.0来编辑代码,运行我自己编写的程序。虽然过程中会有错误,但在这犯错的过程中我学到了我所不知道的。在这纠错的过程中,我来了解到我还有很多的地方不足。如忘记写分号等。其实就错就是个学习的过程。 对于实验上的问题,如粘源代码时,就应先用记事本打开源代码,就可以。而不是在程序中直接粘,这样就不会出现乱码。还有,就是注意小处的错误,如分号和注意换行的使用。第三篇:c语言上机实验报告
第四篇:园林《计算机辅助设计》上机总结报告
第五篇:C语言上机实习报告