二级C语言上机题库.docx
《二级C语言上机题库.docx》由会员分享,可在线阅读,更多相关《二级C语言上机题库.docx(39页珍藏版)》请在冰豆网上搜索。
![二级C语言上机题库.docx](https://file1.bdocx.com/fileroot1/2023-1/22/c00ad3e6-99f8-441e-b4ce-0ae18e35fd30/c00ad3e6-99f8-441e-b4ce-0ae18e35fd301.gif)
二级C语言上机题库
a,b合成c
班级通讯录,信息写到myfile5.dat
a十位和个位c千位和十位,b十位和个位c百位和个位。
4152
*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);
STYPE
FILE
fp
串s正序存放到t串,把串s按逆序连接到t串后面
for(i=0;i<=sl;i++)
t[2*sl]='\0';
输入文本,写到myfile4.txt
a十位和个位c个位和百位,b十位和个位c千位和十位。
1524
*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);
*fw
str
str
从低位取出s中奇数位上的数放在t中
voidfun(longs,long*t)
sl=sl*10;
1至10以及平方根写到myfile3.txt
a十位和个位c个位和百位,b十位和个位c十位和千位。
2514
*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);
fp
fclose(fp)
fname
n个无序整数从小到大排序
for(i=j+1;ip=i;
统计带头结点单向链表结点个数,存放在n所指单元
a十位和个位c十位和千位,b十位和个位c百位和个位。
5142
*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);
*n
next
head
字符串中最后一次出现的子串地址
a=NULL;
if(*r==*p)
100至x间各位数字之和为15的所有整数
a十位和个位c百位和个位,b十位和个位c千位和十位。
1425
*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);
0
x
t++
串s按逆序存放到t串中,把串s按正序连接到t串后面
inti,sl;
t[i]=s[sl-i-1];
n中各位为偶数的数取出,按原序组成新数
a十位和个位c千位和十位,b十位和个位c个位和百位。
4251
*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);
a1
s
i*10
M行M列整数方阵,求两条对角线元素之和
intfun(intn,intxx[][M])
printf("%d",xx[i][j]);
a所指3*5矩阵中第k列元素左移到第0列,第k列以后每列元素依次左移
a十位和个位c十位和千位,b十位和个位c个位和百位。
5241
*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);
k
N-1
temp
根据m值,在m行m列的二维数组中存放数据
voidfun(int(*a)[M],intm)
a[j][k]=(k+1)*(j+1);
将a所指结构体变量s中的数据进行修改,把a中地址返回
a十位和个位c百位和个位,b十位和个位c十位和千位。
2415
*c=(b%10)*1000+(a/10)*100+(b/10)*10+(a%10);
structstudent*
a->score[i]
a
从N个字符串中找出最长的
char*fun(char(*sq)[M])
returnsp;
整除计算
带头结点单向链表各结点递增有序链接,删除数据域值相同结点
1到m之内能被7或11整除的整数放在数组a中
inti;
*n=0;
for(i=7;i<=m;i++)
if((i%7==0)||(i%11==0))a[(*n)++]=i;
q
next
next
选择法对数组n个元素从小到大排序
p=j;
p=i;
统计s串中数字字符出现的次数,存放在t所指变量
1到1000之内能被7或11整除,但不能同时被7和11整除的整数放在数组a中
inti;
*n=0;
for(i=7;i<1000;i++)
if(((i%7)==0||(i%11)==0)&&(i%77)!
=0)a[(*n)++]=i;
s[i]
'9'
*t=n
通过某种方式实现两个变量交换
t=*x;*x=y;
return(t);
将s串中数字字符转换成对应数值,计算这些数值的和
n以内同时能被3与7整除的所有自然数之和的平方根s
doublesum=0.0;inti;
for(i=21;iif((i%3==0)&&(i%7==0))sum+=i;
returnsqrt(sum);
'0'
s++
sum
k以内最大的10个能被13或17整除的自然数之和
if((k%13==0)||(k%17==0))
}
筛选法得2~n之间所有素数
n以内能被5或9整除的所有自然数的倒数之和
inti;doublesum=0.0;
for(i=1;i<=n;i++)
if(i%5==0||i%9==0)sum+=1.0/i;
returnsum;
a[i]
a[i]
0
为一个偶数寻找两个素数,这两个素数之和等于该偶数
y=1;
d=a-i;
字符串比较
带头结点单向链表,输出尾部结点数据,释放该结点
比较两个字符串长度,返回较长字符串
inti;char*p=s,*q=t;
for(i=0;*p&&*q;i++){p++;q++;}
if(*p==0&&*q==0)returns;
if(*p)returns;
elsereturnt;
next
t->data
t
字符串逆序
fun(char*a)
printf("%c",*a);
N*N矩阵:
最外层值全部为1,第2层值全部为2,第3层值全部为3,…
从传入num个字符串中找出最长的一个字符串
if(strlen(a[i])>maxlen)
{maxlen=strlen(a[i]);k=i;}
[N]
i
i+1
将十进制m转换成k进制
aa[i]=m%k;
printf("%d",aa[i-1]);
字符串计算
将n中各位上为偶数的数取出,按原相反顺序组成新数
字符串连接
strcat(p1,p2);
0
x*10
n/10
按顺序给s数组中的元素赋予从2开始的偶数,再按顺序对每五个元素平均值,将值存放在w数组中
sum=0.0;
if((i+1)%5==0)
求ss字符串数组中最长字符串的长度,将其余字符串右边用*补齐,使其与最长的字符串等长
对长度为7的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列
charch;inti,j;
for(i=1;i<6;i++)
for(j=i+1;j<6;j++)
{if(*(s+i)<*(s+j)){ch=*(s+j);*(s+j)=*(s+i);*(s+i)=ch;}}
ss[i]
n+j
1
p串中每个单词的最后—个字母改成大写
if(*p=='')
*(p-1)=toupper(*(p-1));
对ss字符串数组中的M个字符串按长度由短到长进行排序
字符串中逆置。
strrev(s);
i+1
k=j
t
判断ch是否与str串中某个字符相同;若相同,则什么也不做;若不同,则将其插在串最后
voidfun(char*str,charch)
if(*str!
=ch)
str[1]='\0';
函数指针指向要调用函数,在_2_处指向函数f1,在_3_处指向函数f2
判断字符串是否为回文
inti,j=strlen(str);
for(i=0;iif(str[i]!
=str[j-i-1])return0;
return1;
double
f1
f2
带头结点单向链表,将结点数据域为偶数的值累加
p=h->next;
p=p->next;
字符串转换和统计
a所指4*3矩阵中第k行的元素与第0行的元素交换
字符串ss中下标为奇数位置上字母转换为大写
char*p=ss;inti=0;
while(*p)
{if((i%2)&&(*p>='a'&&*p<='z'))*p-=32;p++;i++;}
returnss;
k
N
a[k][i]
将字符串中所有字符按ASCII码升序排序
for(i=strlen(t)-1;i;i--)
if(t[j]>t[j+1])
带头结点单向链表,查找数据域中值为ch的结点,返回顺序号
字符串ss中下标为奇数位置上字母转换为大写
char*p=ss;inti=0;
while(*p)
{if((i%2)&&(*p>='a'&&*p<='z'))*p-=32;p++;i++;}
returnss;
NULL
n
head,ch
删除串s中所有空白字符
for(i=0,t=0;p[i];i++)
c[t]='\0';
利用结构体变量存储一名学生信息,输出该学生信息
统计ss字符串中指定字符个数
intcnt=0;char*p=ss;
while(*p)
{if(*p==c)cnt++;p++;}
returncnt;
tt
tt.score[i]
std
用冒泡法对6个字符串按由小到大排序
for(j=i+1;j<6;j++)
*(pstr+i)=*(pstr+j);
求ss字符串数组中长度最长的字符串所在的行下标,并把其串长放在n所指变量中
统计一个长度为2的字符串在另一个字符串中出现的次数
intcnt=0;char*p=str,*q;
while(*p)
{q=strstr(p,substr);
if(q==NULL)break;
p=q+strlen(substr);cnt++;}
returncnt;
[N]
len
*n=len
t+=1.0/i;
returnt;
把s串中下标为奇数的字符右移到下一个奇数位置,最右边被移出的字符绕回放到第一个奇数位置
统计字符串中'a'到'z'26个字母各自出现次数
char*p=tt;inti;
for(i=0;i<26;i++)pp[i]=0;
while(*p)
{if(*p>='a'&&*p<='z')pp[*p-'a']+=1;p++;}
n-1
s[k]
c
求s=aa…aa-…-aaa-aa-a
longs=0,t=0;
t=t/10;
学生结构体变量,重写filename所指文件中最后一个学生数据
统计一行字符串中单词个数
intk=1;
while(*s)
{if(*s=='')k++;s++;}
returnk;
filename
fp
fp
带头结点的单向链表,为各结点数据域赋0到m-1的值
p=(NODE*)malloc(sizeof(NODE));returnh;
字符串删除
判定N*N矩阵是否是"幻方"
删除字符串中所有空格
char*p=str;inti=0;
while(*p)
{if(*p!
='')str[i++]=*p;p++;}
str[i]=0;
0
||
1
t-=1.0/i;
returnt;
求ss字符串数组中最长字符串长度,其余字符串左边用*补齐,使其与最长字符串等长
从字符串中删除指定字符
char*p=s;inti=0;
while(*p)
{if(*p!
=c)s[i++]=*p;p++;}
s[i]=0;
k
len
ss[i][j]
n的阶乘
result*=n--;
returnresult;
对s串中下标为奇数字符按ASCII码大小递增排序,将排序后下标为奇数的字符取出,存入p数组中
删除字符串中指定下标的字符
strncpy(b,a,n);
b[n]=0;
strcat(b,a+n+1);
t=Ii+2'\0'
求π的近似值,直到最后一项绝对值小于指定的数为止
while(fabs(t)>=num)
t=s/n;
计算带头结点单向链表中各结点数据域之和
s字符串中下标为偶数的字符删除
inti,j=0;
for(i=1;it[j]=0;
data
next
head
将s串中出现的t1子串全部替换成t2子串
while(*r)
*a=*r;a++;r++;
人员记录由编号和出生年月日组成,N名人员数据已存入结构体数组std,找出指定编号人员的数据
s字符串中ASCII值为偶数的字符删除
inti,j=0;
for(i=0;iif(s[i]%2)t[j++]=s[i];
t[j]=0;
STU
std[i].num
std[i]
从s串中找出t子串个数
r++;p++;
if(*r=='\0')
将s串中所有字母字符顺序前移,其它字符顺序后移
s字符串中ASCII值为奇数的字符删除
inti,j=0;
for(i=0;iif(s[i]%2==0)t[j++]=s[i];
t[j]=0;
s[i]
k
'\0'
将s串中最后—次出现的,t1子串替换成t2子串,新串放在w数组中
while(*w)
if(*r==*p)
将s串中所有字母字符顺序前移,其它字符顺序后移
s字符串中下标为偶数同时ASCII值为奇数字符删除
inti,j=0;
for(i=0;iif(!
((i%2)==0&&(s[i]%2)))t[j++]=s[i];
t[j]=0;
s[i]
k
'\0'
将s串中最后—次出现的,t1子串替换成t2子串,新串放在w数组中
while(*w)
if(*r==*p)
统计出带头结点单向链表中结点个数,存放在n所指单元中
s字符串中除了下标为偶数同时ASCII值也为偶数字符外,其余都删除
inti,j=0;
for(i=0;iif(s[i]%2==0)t[j++]=s[i];
t[j]=0;
*n
next
head
求字符串中最后一次出现的子串地址
a=NULL;
if(*r==*p)
直到
s字符串中除了下标为奇数同时ASCII值也为奇数字符外,其余都删除
inti,j=0;
for(i=1;iif(s[i]%2)t[j++]=s[i];
t[j]=0;
0
i++
2.0*i
将s串正序和反序连接,新串放在t数组中
voidfun(char*s,char*t)
t[2*d]='\0';
平均分
带头结点单向链表中各结点数据递增有序链接,把x值放入一个新结点并插入到链表中
计算n门课程的平均分
floatave=0.0;inti;
for(i=0;iave=ave/n;returnave;
x
p
s
计算num各位上数字之积
longk=1;
num/=10;
3*4矩阵中找出行上最大,列上最小的那个元素
m个人成绩放在score数组中,将低于平均分人数返回,将低于平均分的分数放在below数组中
floatav=0.0;inti,j=0;
for(i=0;ifor(i=0;iscore[i])below[j++]=score[i];
returnj;
J0i++
for(i=2;i<=m;i++)
y-=1.0/(i*i);
数字字符转换,若ch是数字字符'0'至'9',则'0'转换成'9','1'转换成'8'…
N名学生成绩已放在一个带头节点的链表中,求平均分
STREC*p=h->next;doubleav=0.0;intn=0;
while(p!
=NULL)
{av=av+p->s;p=p->next;n++;}
av/=n;returnav;
char
ch<='9'
'0'
将串p中所有字符复制到串b中,每复制三个字符之后插入一个空格
b[k]=*p;
b[k++]='';
把a数组中最小值放在a[0]中,把最大值放在a[1]中,把次小值放在a[2]中,把次大值放在a[3]中,…
某学生记录由学号,8门课程成绩和平均分组成,求该学生平均分放在记录的ave成员中
inti;
for(i=0;iave+=a->s[i];
a->ave/=N;
a[i]
a[j]
a[j]
递归算法计算斐波拉契级数数列中第n项的值
switch(g)
case1:
case2:
return1;
把a数组中最大值放在a[0]中,最小值放在a[1]中,把次大值放在a[2]中,…
学生记录由学号和成绩组成,把低于平均分学生数据放在b数组中
inti;doubleave=0.0;
*n=0;
for(i=0;ifor(i=0;ireturnave;
*a
2
i+1
按顺序给s数组中的元素赋予从2开始的偶数,再按顺序对每五个元素平均值,将值存放在w数组中
sum=0.0;
if((i+1)%5==0)
学生结构体变量,对形参b所指结构体变量中数据进行修改
学生记录由学号和成绩组成,把高于等于平均分学生数据放在b数组中
doublet=0;inti;
*n=0;
for(i=0;ifor(i=0;i=t)b[(*n)++]=a[i];
returnt;
->sno
->name
&t
递归算法求某数a的平方根
doublefun(doublea,doublex0)
if(fabs(x1-x0)>0.00001)
最高和最低
学生结构体变量,所有学生数据均以二进制方式输出到student.dat文件中,从中找出指定学号的学生数据,对该生的分数进行修改,使每门课的分数加3分
N名学生成绩已放入一个带头节点的链表中,找出学生最高分
doublemax=h->s;STREC*p=h->next;
while(p)
{if(p->s>max)max=p->s;p=p->next;}
returnmax;
fp
==
fp
用插入法对字符串中字符按从小到大排序
n=strlen(aa);
ch=aa[i];
人员记录由编号和出生年月日组成,N名人员数据已存入结构体数组std中,找出指定出生年份的人员
记录由学号和成绩构成,找出成绩最高学生记录(只有一个最高分)
inti,max=a[0].s,j=0;
for(i=1;iif(max*s=a[j];
std[i].year
std[i]
n
读入整数k,打印它的所有质因子
IsPrime(intn)
if(!
(n%i))
计算x数组中N个数的平均值,并将大于平均值的数放在y数组中
记录由学号和成绩构成,找出成绩最低学生记录(只有一个最低分)
inti,min=a[0].s,j=0;
for(i=1;iif(min>a[i].s){j=i;min=a[i].s;}
*s=a[j];
0.0
x[i]/N
j++
doublefun(intm)
for(i=100;i<=m;i+=100)
a数组前半部分元素和后半部分元素对换
记录由学号和成绩组成,把分数最高的学生数据放在h数组中,分数最高学生可能不止一个
inti,max=a[0].s,n=0;
for(i=1;ifor(i=0;ireturnn;
2+1
i
p+i
3个数,最大的放在a中,最小的放在c中
floatk;
if(*a<*c)
a数组前半部分元素和后半部分元素对换
记录由学号和成绩组成,把分数最低的学生数据放在h数组中,分数最低学生可能不止一个
inti,min=a[0].s,n=0;
for(i=1;ia[i].s)min=a[i].s;
for(i=0;ireturnn;
2+1
i
p+i
3个数,最大的放在a中,最小的放在c中
floatk;
if(*a<*c)
100至999间所有整数中各位数字之和为x的整数
记录由学号和成绩组成,按分数高低排列学生记录,高分在前
STRECtmp;inti,j;
for(i=0;ifor(j=i+1;jif(a[i].s999
t/10
x
从低位开始取出长整型变量s中偶数位上的数,构成一新数放在t中
voidfun(longs,long*t)
while(s>0)
逆置数组元素
记录由学号和成绩组成,返回指定学号的学生数据,若没找到,给学号置空串,给成绩置-1
STRECc;inti;
c.num[0]='\0';c.s=-1;
for(i=0;iif(strcmp(a[i].num,b)==0)
{strcpy(c.num,a[i].num);c.s=a[i].s;break;}
returnc;
n/2
a[n-1-i]
t
将一个由八进制数字字符组成的字符串转换为与其面值相等十进制整数
n=*p-'0';
n=n*8+*p-'0';
学生结构体数组,存储了若干名学生的学号,姓名和3门课成绩,按姓名字典顺序排序
记录由学号和成绩组成,把指定分数范围内学生数据放在b数组中
inti,j=0;
for(i=0;iif(a[i].s>=l&&a[i].s<=h)b[j++]=a[i];
returnj;
structstudent
n-1
a[i].name,a[j].name
在串str中找出ASCI