C语言上机题105套Word文件下载.docx
《C语言上机题105套Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言上机题105套Word文件下载.docx(78页珍藏版)》请在冰豆网上搜索。
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);
第三套
给定程序中,函数fun的功能是:
将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。
1、fp2、fclose(fp);
3、fname
给定程序MODI1.C中fun函数的功能是:
将n个无序整数从小到大排序。
1、for(i=j+1;
n-1;
i++)改为
for(i=j+1;
n;
i++)
2、t=i;
改为p=i;
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);
第四套
调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0.在复制的过程中,把复制的内容输出到终端屏幕。
主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
1、"
r"
2、fs3、ft
将长整型数众每一位上为偶数的数依次取出,构成一个新数放在t中。
1、if(d%2=0)改为if(d%2==0)
2、s\=10;
改为s/=10;
将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
{
*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);
第五套
给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。
把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。
1、x;
2、p3、s
计算正整数num的各位上的数字之积。
1、longk;
改为longk=1;
2、num\=10;
改为num/=10;
请编写函数fun,它的功能是:
计算n门课程的平均分,计算结果作为函数值返回。
inti;
floatave=0.0;
for(i=0;
n;
i++)ave=ave+a[i];
ave=ave/n;
returnave;
第六套
给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。
1、next2、t->
data3、t
将字符串中的字符按逆序输出,但不改变字符串中的内容。
1、a改为*a
2、printf("
%c"
*a)改为printf("
*a)
请编写一个函数fun,它的功能是:
比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。
如两个字符串长度相同,则返回第一个字符串。
char*p=s,*q=t;
*p&
&
*q;
i++){
p++;
q++;
}
if(*p==0&
*q==0)returns;
if(*p)returns;
elsereturnt;
第七套
给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。
删除链表中数据域值相同的结点,使之只保留一个。
1、q2、next3、next
用选择法对数组中n个元素按从小到大的顺序进行排序。
1、p=j改为p=j;
2、p=j;
改为p=i;
求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
inti;
*n=0;
for(i=7;
=m;
if((i%7==0)||(i%11==0))a[(*n)++]=i;
第八套
在带有头结点的单向链表中,查找数据域中值为ch的结点。
找到后通过函数值返回该结点在链表中所处的顺序号;
若不存在值为ch的结点,函数返回0值。
1、02、n3、head,ch
删除p所指字符串中的所有空白字符(包括制表符、回车符及换行符)。
输入字符串时用‘#’结束输入。
1、For改为for2、c[t]="
\0"
改为c[t]='
将ss所指字符串中所有下标为奇数位置中的字母转换为大写(若该位置上不是字母,则不转换)。
for(i=1;
strlen(*ss);
i+=2){
if(ss[i]>
='
a'
&
ss[i]<
z'
)ss[i]-=32;
第九套
统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。
1、*n2、next3、head
求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数输出从此地址开始的字符串;
若未找到,则函数值为NULL。
1、a=Null改为a=NULL
2、if(r==p)改为if(*r==*p)
将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;
串中剩余字符所形成的一个新串放在t所指的数组中。
inti,j=0;
for(i=0;
strlen(s);
i+=2)
if(s[i]%2==0)t[j++]=s[i];
t[j]=0;
第十套
计算出带有头结点的单向链表中各结点数据域中值之和作为函数值返回。
1、data2、next3、head
将s所指字符串中出现的与t1所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。
在此处,要求t1和t2所指字符串的长度相同。
1、while(r)改为while(*r)
2、r++改为r++;
将s所指字符串中下标为偶数的字符串的字符删除,串中剩余字符形成的新串放在t所指数组中。
strlen(s);
i+=2)t[j++]=s[i];
第十一套
人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。
找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。
1、STU2、std[i].num3、std[i]
从s所指字符串中,找到与t所指字符串相的子串的个数作为函数值返回。
1、p++改为p++;
2、if(r=='
)改为if(*r==0)
将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指数组中。
i++)if(s[i]%2)t[j++]=s[i];
第十二套
人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。
找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
1、std[i].year2、std[i]3、n
给定程序MODI1.C的功能是:
读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。
1、IsPrime(intn);
改为IsPrime(intn)
2、if!
(n%i)改为if(!
(n%i))
已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。
请编写函数fun,函数的功能是:
找出成绩最高的学生记录,通过形参指针传回主函数(规定只有一个最高分)。
已给出函数的首部,请完成该函数。
inti,max=a[0].s,j=0;
N;
if(max<
a[i].s){
j=i;
max=a[i].s;
*s=a[j];
第十三套
给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。
函数fun的功能是将该学生的各科成绩都乘以一个系数a。
1、STU2、score[i]3、&
std
求k!
(k<
13),所求阶乘的值作为函数值返回。
1、ifk>
0改为if(k>
0)
2、elseif(k=0)改为elseif(k==0)
程序定义了N×
N的二维数组,并在主函数中自动赋值。
请编写函数fun(inta[][N],intn),函数的功能是:
使数组左下三角元素中的值乘以n。
inti,j;
for(j=0;
j<
=i;
j++)
a[i][j]*=n;
第十四套
将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
1、*std2、PERSON3、std
将m(1≤m≤10)个字符串连接起来,组成一个新串,放在pt所指存储区中。
1、Intk,q,i;
改为intk,q,i;
2、pt[i]=str[k,i];
改为pt[i]=str[k][i];
程序设计题:
请编写函数fun(inta[][N]),函数的功能是:
使数组左下三角元素中的值全部置成0。
a[i][j]=0;
第十五套
将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。
1、*std2、std[i].age3、max.name
实现两个整数的交换。
1、voidfun(inta,intb)改为
voidfun(int*a,int*b)
2、t=b;
b=a;
a=t;
改为
t=*b;
*b=*a;
*a=t;
请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并以此放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
inti,j,min,k;
i++)
{min=tt[0][i];
k=0;
for(j=1;
M;
if(min>
tt[j][i])
{min=tt[j][i];
k=j;
pp[i]=tt[k][i];
第十六套
程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。
函数fun的功能是输出这名学生的信息。
1、tt2、tt.score[i]3、std
求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。
1、m=0;
改为m=i;
2、if(a[k]>
a[m])k=m;
改为if(a[k]>
a[m])m=k;
请编写一个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。
for(i=1;
i<
=w;
i*=10);
return(w%(i/10));
第十七套
对形参ss所指字符串中的M个字符串按长度由短到长进行排序。
ss所指字符串数组中共有M个字符串,且串长<
N。
1、i+12、k=j3、t
判断ch中的字符是否与str所指串中的某个字符相同;
若相同,什么也不做,若不同,则将其插在串的最后。
1、voidfun(charstr,charch)改为
voidfun(char*str,charch)
2、if(*str==ch)改为if(*str!
=ch)
3、str[1]='
0'
改为str[1]=0;
请编一个函数fun(char*s),函数的功能是把s所指字符串中的内容逆置。
charb[N];
inti=0,j;
for(j=strlen(s)-1;
j>
=0;
j--)
b[i++]=s[j];
strcpy(s,b);
第十八套
求出形参ss中最长字符串的长度,其余字符串用字符*补齐,使其与最长的字符串等长。
字符串数组中共有M个字符串,且串长<
1、k2、len3、ss[i][j]
计算整数n的阶乘。
1、result*=--n;
改为result*=n--;
2、return_____;
改为returnresult;
编写函数fun,函数的功能是:
从s所指的字符串中删除给定的字符。
同一字母的大、小写按不同字符处理。
如果输入的字符在字符串中不存在,则字符串照原样输出。
{char*p=s;
inti=0;
while(*p){
if(*p!
=c)s[i++]=*p;
p++;
s[i]=0;
第十九套
求出形参ss中最长字符串的长度,将其余字符串用字符*补齐,使其与最长的字符串等长。
1、ss[i]2、n+j3、1
将p所指字符串中的每个单词的最后一个字母改成大写。
(这里的“单词”是指由空格隔开的字符串)。
1、if(p=='
'
)改为if(*p=='
)
2、*(p-1)=toupper(*(p-1))改为
*(p-1)=toupper(*(p-1));
请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。
{charch;
inti,j;
6;
for(j=i+1;
j++){
if(*(s+i)<
*(s+j)){
ch=*(s+j);
*(s+j)=*(s+i);
*(s+i)=ch;
第二十套
求ss所指字符串数组中长度最长的字符串所在的行下标,作为返回值返回,并把其串长放在形参n所指变量中。
Ss所指字符串数组中共有M个字符串,且串长<
1、[N]2、len3、*n=len
根据形参m,计算如下公式的值。
t=1+1/2+1/3+1/4+……+1/m
1、t+=1.0/k;
改为t+=1.0/i;
2、________改为returnt;
编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
intcnt=0;
char*p=str,*q;
q=strstr(p,substr);
if(q==NULL)break;
p=q+strlen(substr);
cnt++;
returncnt;
第二十一套
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。
1、M2、<
3、k
tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变。
1、if((‘a’<
=tt[i])||(tt[i]<
=‘z’))改为
if((‘a’<
=tt[i])&
(tt[i]<
=‘z’))
2、tt[i]+=32;
改为tt[i]-=32;
请编写函数fun,其功能是:
将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
voidfun(intm,int*k,intxx[])
inti,j;
*k=0;
for(i=2;
m;
i++)
{for(j=2;
j<
i;
j++)
if(i%j==0)
break;
if(i==j)
xx[(*k)++]=i;
第二十二套
将s所指字符串中的所有数字字符移动到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。
1、j++2、s[i]=t1[i]3、j
用冒泡法对6个字符串按由小到大的顺序进行排序。
1、for(j=i+1,j<
6,j++)改为
for(j=i+1;
j<
6;
2、*(pstr+i)=pstr+j;
*(pstr+i)=*(pstr+j);
求出ss所指字符串中指定字符的个数,并返回此值。
char*p=ss;
if(*p==c)cnt++;
第二十三套
在形参s所指字符串中的每个数字字符之后插入一个*号。
1、&
2、03、s[j]
根据整型形参m,计算如下公式的值。
y=1+1/(2*2)+1/(3*3)+1/(4*4)+……+1/(m*m)
1、for(i=2;
m;
i++)改为
for(i=2;
=m;
2y+=1/(i*i);
改为y+=1.0/(i*i);
实现B=A+A’,即把矩阵A加上A的转置,存放在矩阵B中。
计算结果在main函数中输出。
intc[3][3];
3;