C语言程序设计期末考试及答案文档格式.docx
《C语言程序设计期末考试及答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计期末考试及答案文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
![C语言程序设计期末考试及答案文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/6/bc3e59fe-b79c-4d6d-8381-3a3cf84222f9/bc3e59fe-b79c-4d6d-8381-3a3cf84222f91.gif)
iNum);
switch(iNum/10)
{
case10:
case9:
学生成绩A\n"
break;
case8:
学生成绩B\n"
case7:
学生成绩C\n"
case6:
学生成绩D\n"
default:
学生成绩E\n"
}
3.输入两个正整数m和n,求其最大公约数和最小公倍数。
intmain()
intp,r,n,m,temp;
请输入两个正整数n,m:
//请用空格隔开
%d%d,"
n,&
m);
if(n<
m)
temp=n;
n=m;
m=temp;
p=n*m;
while(m!
=0)
r=n%m;
m=r;
它们的最大公约数为:
%d\n"
n);
它们的最小公约数为:
p/n);
return0;
4.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include<
stdlib.h>
string.h>
inti,a[4];
chart;
intmain()
{
请输入字符串"
for(i=0;
;
i++)
%c"
t);
if(t=='
\n'
)break;
elseif(t>
='
A'
&
t<
Z'
)a[0]++;
a'
z'
)a[0]++;
elseif(t=='
'
)a[1]++;
0'
9'
)a[2]++;
elsea[3]++;
i<
4;
if(i==0)
printf("
字母的个数是"
elseif(i==1)
printf("
空格的个数是"
elseif(i==2)
数字的个数是"
elseif(i==3)
其它字符的个数是"
a[i]);
system("
pause"
return0;
5.求sn=a+aa+aaa+…+aa...a(n个a)之值,其中a是一个数字。
例如:
2+22+222+2222+22222(此时n=5),n由键盘输入。
intmain(void)
intsum=0;
intsun=0;
inta;
intn;
inti=0;
printf("
请入入a值(整数):
a="
scanf("
a);
请入入n值:
n="
n);
while(i<
n)
sum=a+sum*10;
sun+=sum;
++i;
sun=%d\n"
sun);
第二次试验
1.有一分数序列:
求出这个数列的前20项之和。
main()
{inti,x,y,a;
floatsum=0;
x=2;
y=1;
for(i=1;
20;
i++)
sum+=(float)(x)/y;
//printf("
%d/%d\n"
x,y);
a=x;
x=x+y;
y=a;
%7.5f\n"
sum);
2.求一个3
3矩阵对角线元素之和。
voidmain()
inta[3][3];
inti,j;
intsum=0;
intsum1=0;
//input
for(i=0;
i<
=2;
i++)
for(j=0;
j<
j++)
printf("
a[%d][%d]:
i+1,j+1);
scanf("
a[i][j]);
}
//sum
if(i==j)
sum=sum+a[i][j];
if(i+j==2)
sum1=sum1+a[i][j];
//output
DuiJIao1:
%d\n"
DuiJIao2:
sum1);
//outputmatrix
%d"
a[i][j]);
依次输入9个数
输出两对角线和
3.将一个数组中的值按逆序重新存放,例如原来的顺序为:
8,6,5,4,1。
要求改为:
1,4,5,6,8。
{inti,b[10];
10;
b[i]);
for(i=9;
i>
-1;
i--)
%5d"
b[i]);
4.有一篇文章,共有3行文字,每行有80个字符。
要求分别统计出其中英文大写字母、小写字母、数字、空格、以及其他字符的个数。
{inti,j,upp,low,dig,spa,oth;
chartext[3][80];
upp=low=dig=spa=oth=0;
for(i=0;
3;
{printf("
pleaseinputline%d:
i+1);
gets(text[i]);
for(j=0;
j<
80&
text[i][j]!
\0'
j++)
{if(text[i][j]>
text[i][j]<
)
upp++;
elseif(text[i][j]>
&
low++;
dig++;
elseif(text[i][j]=='
spa++;
else
oth++;
\nuppercase:
upp);
lowercase:
low);
digit:
dig);
space:
spa);
other:
oth);
第三次实验
1.将字符串computer赋给一个字符数组,然后从第一个字母开始输出该串。
请用指针实现。
#defineMAX_LENGTH32
charstr[MAX_LENGTH]={0};
char*pStr=(char*)&
str;
//1.将字符串computer赋给一个字符数组
strcpy(str,"
computer"
//2.然后从第一个字母开始间隔地输出该串
while(*pStr!
='
)
%c\n"
*pStr);
pStr++;
return1;
2.将无符号八进制数字字符串转换为十进制整数。
例如,输入的字符串为556,则输出十进制整数366。
用指针实现。
{char*p,s[6];
intn=0;
p=s;
gets(p);
while(*p!
{n=n*8;
n=n+(*p-'
p++;
%d\n"
3.编程输入一行文字,找出其中的大写字母,小写字母,空格,数字,及其他字符的个数,用指针实现。
ctype.h>
charstr[100];
intnum1,num2,num3,num4;
num1=num2=num3=num4=0;
gets(str);
for(inti=0;
strlen(str);
if(islower(str[i]))
num1++;
elseif(isupper(str[i]))
num2++;
elseif(isdigit(str[i]))
num3++;
elseif(str[i]=='
num4++;
小写字母:
num1);
大写字母:
num2);
数字:
num3);
空格:
num4);
第四次实验
1.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
math.h>
intprime(intx)
inttemp,i,k;
temp=(int)(sqrt(x));
for(i=2;
=temp;
++i)
if(x%i==0)
{k=0;
break;
if(i>
temp)
k=1;
returnk;
intx;
intk;
x);
k=prime(x);
if(k)
%disprime\n"
x);
%disnotprime\n"
2.写一函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include<
char*fanxu(charstr1[100])//返回类型
inti,j,t;
charstr2[100];
strcpy(str2,str1);
t=strlen(str1);
for(i=0,j=t-1;
j>
i++,j--)
str1[i]=str2[j];
returnstr2;
intmain(intargc,char*argv[])
charstr0[100];
gets(str0);
fanxu(str0);
puts(str0);
3.写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串及输出上述的结果。
intalph,digit,space,others;
voidcount(charstr[]);
voidmain(void)
chartext[80];
\n输入字符串:
gets(text);
字符串是:
puts(text);
strcat(text,"
alph=0;
digit=0;
space=0;
others=0;
count(text);
\n%d字母,%d数字,%d空格,%d其它字符\n"
alph,digit,space,others);
voidcount(charstr[])
inti;
str[i]!
if((str[i]>
str[i]<
)||(str[i]>
))
alph++;
elseif(str[i]>
digit++;
elseif(str[i]=='
space++;
others++;
4.写一函数,使给定的一个二维数组(3×
3)转置,即行列互换。
voidx(inta[3][3])//x是行列互换的函数名
行列互换后:
for(i=0;
for(j=0;
%d\t"
a[j][i]);
intsum[3][3],i,j;
请输入3*3的矩阵数:
sum[i][j]);
x(sum);