C语言程序设计题目Word文档下载推荐.docx
《C语言程序设计题目Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言程序设计题目Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
i;
j++)sum=sum+a[j];
s=sum+day+1;
j++)
sum=sum+a[j];
s=sum+day;
return(s);
BC语言程序设计教程(第三版)课后习题11.3
现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。
编写一个函数input,用来输入一个学生的数据记录。
编写一个函数print,打印一个学生的数据记录。
在主函数调用这两个函数,读取N条记录输入,再按要求输出。
N<
100【考虑用什么做函数的参数?
结构体变量,还是指向结构体的指针变量,还是用结构体数组名?
】
非结构体做法
#include<
stdio.h>
inti,n;
inta[100],b[100],c[100];
chare[100][81],f[100][81];
%d"
n);
for(i=1;
i<
=n;
i++)
scanf("
%s%s%d%d%d"
e[i],f[i],&
a[i],&
b[i],&
c[i]);
printf("
%s,%s,%d,%d,%d\n"
e[i],f[i],a[i],b[i],c[i]);
return0;
C结构体训练
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
注意:
刻画学生的数据类型必须用结构体类型。
不能用多个数组解决
structstu{
intnum;
charname[20];
intscore1;
intscore2;
intscore3;
}boy[1024];
intN,i,s,s1=0,s2=0,s3=0,max=0,c;
floatave1,ave2,ave3;
N);
for(i=0;
N;
i++)
%d%s%d%d%d"
boy[i].num,&
boy[i].name,&
boy[i].score1,&
boy[i].score2,&
boy[i].score3);
s1+=boy[i].score1;
s2+=boy[i].score2;
s3+=boy[i].score3;
s=boy[i].score1+boy[i].score2+boy[i].score3;
if(s>
max)
{
max=s;
c=i;
}
ave1=(s1*1.0)/(N*1.0);
ave2=(s2*1.0)/(N*1.0);
ave3=(s3*1.0)/(N*1.0);
%.0f%.0f%.0f\n"
ave1,ave2,ave3);
%d%s%d%d%d\n"
boy[c].num,boy[c].name,boy[c].score1,boy[c].score2,boy[c].score3);
D矩阵转置
输入N*N(N<
100)的矩阵,输出它的转置矩阵。
intN,a[100][100],i,j,b[100][100];
for(j=0;
j++)
scanf("
a[i][j]);
b[j][i]=a[i][j];
N-1;
printf("
%d"
b[i][j]);
b[i][N-1]);
E求矩阵的外围元素之和
求矩阵的外围元素之和
inta[10][10],i,j,N,s=0;
if(i==0||j==0||i==N-1||j==N-1)
s=s+a[i][j];
F求n到m之间的素数并输出
求n到m以内的素数(包含n,m,且m>
=n>
=10,n<
=m<
=100)n和m由键盘输入,并将这些素数存储到数组a中并输出(每个素数后面带一个空格)
要求:
(1)编写如下接口的功能函数:
intfun(intn),该函数的功能是判断n是不是素数。
若是,返回1,若不是返回0。
(2)main函数去调用该功能函数
intfun(intn)
intt;
for(t=2;
t<
n;
t++)
if(n%t==0)break;
if(t<
n)return0;
elsereturn1;
intn,m,i,a[90],j=0,b;
%d,%d"
n,&
m);
for(i=n;
=m;
if(fun(i)==1)
a[j++]=i;
for(b=0;
b<
j;
b++)
a[b]);
G<
编程题>
删除字符串中的特殊符号
指定字符串中仅包含字母(含大小写),空格和星号*,编写自定义函数fun,删除其中的*。
程序的主体框架已经提供在下面,可以直接复制粘贴到答题框。
注意仅能改动注释之内的内容,注释外内容不得修改,否则将被判违规。
voidfun(char*p)
/*****注释1:
答题请在本行与注释2之间编写程序。
本行注释不得删除****/
char*p1,*p2;
for(p1=p2=p;
*p1;
p1++)
if(*p1!
='
*'
)
*p2++=*p1;
*p2=0;
returnp;
/*****注释2:
答题请在本行与注释1之间编写程序。
charb[1024];
while(gets(b)!
\0'
fun(b);
%s\n"
b);
return1;
H<
改错题>
冒泡排序
下列给定程序中函数fun的功能是:
用冒泡法对6个字符串按由小到大的顺序进行排序。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构.改错位置已经标注为found,所有改错只能在found附近修改。
#include<
string.h>
#include<
#defineMAXLINE20
fun(char*pstr[6])
inti,j;
char*p;
5;
/**********found***************/
for(j=i+1;
6;
if(strcmp(*(pstr+i),*(pstr+j))>
0)
p=*(pstr+i);
*(pstr+i)=*(pstr+j);
*(pstr+j)=p;
intmain()
inti;
char*pstr[6],str[6][MAXLINE];
pstr[i]=str[i];
%s"
pstr[i]);
fun(pstr);
TheStringaftersorting:
\n"
);
I<
填空题>
2015C二级考试无纸化操作题
(2)
下列给定程序中,函数fun的功能是:
把形参a所指数组中的最小值放在元素a[O]中,接着把a所指数组中的最大值放在a[1]元素中;
再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],依此类推。
例如,若a所指数组中的数据最初排列为:
9,1,4,2,3,6,5,8,7;
则按规则移动后,数据排列为:
1,9,2,8,3,7,4,6,5。
形参n中存放a所指数组中数据的个数。
规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
J编辑部的故事
(1)
文艺青年杂志社对作者按字符数付稿酬。
编辑部的编辑遇到一个烦心事,最近作者群中流行“咆哮体”文书,一句话里带有很多个感叹号,而且咆哮体中经常混杂着“有木有”和“尼玛”这样无用的词语,使得杂志的额外支出大大增加。
你需要帮助解决这一个问题,将文本中多个连续的感叹号,无用的“有木有”和“尼玛”等无用的词。
K<
39
下面程序中函数fun的功能是:
统计p2子字符串在p1所指的主字符串中出现的次数。
请改正程序中的错误,使得它能得出正确结果
intfun(char*p1,char*p2)
inti,j,k,num=0;
/*****found****/
p1[i];
for(j=i,k=0;
p2[k]==p1[j];
k++,j++)
if(p2[k+1]=='
num++;
Break;
returnnum;
charstr[80],substr[80];
gets(str);
gets(substr);
fun(str,substr));
L<
33
编写函数fun,其功能是找出M×
N的二维浮点数组中最大元素的值,将这个数输出。
(M,N均小于100)
voidfun(float*p,intM,intN)
floatmx=*(p+0);
/******begin******/
1024;
if(*(++p)>
mx)
mx=*p;
/*******end******/
printf("
%.4f"
mx);
inta[100][100],M,N,i,j;
%d%d"
M,&
M;
for(j=0;
%f"
fun(&
a[0][0],M,N);
M第七章之找到第一名
(1)
某市进行了一次英语竞赛,一共有N个人报名参加(N<
1000000),按照报名顺序分别是1号~N号。
英语竞赛的得分范围是0~100分,可能会有0.5分存在。
现在给你N的值和按照号码排列的得分,要求输出第一名的号码。
若是有并列第一名则需要同属输出多个第一名的号码。
inta[100],N,i,max=0,n;
N=%d"
a[i]);
if(a[i]>
max=a[i];
if(max==a[i])
n=i+1;
n);
N第七章之删除数组元素
(1)
输入N个大小范围在0~100(含0和100)的整数(N<
100),并未排序且不重复。
从中寻找一个指定的数的下标号(从1开始),从数组中删除,并将剩余的数组内容输出。
intn,a[99],i,b;
=n-2;
%d,"
}scanf("
a[n-1]);
b);
if(b!
=n)
=b-2;
Printf("
a[i]);
for(i=b;
}printf("
a[n-1]);
=n-3;
a[n-2]);
O第七章之冒泡排序法
(1)
使用冒泡排序法对数组元素进行排序,要求输出每一趟排序后的数组内容。
数组大小N<
10,数组元素定为正整型。
inta[10],i=0,j,n,t,m;
while(scanf("
a[i])!
=EOF)
i++;
n=i;
n-1;
n-i-1;
if(a[j]>
a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
a[0]);
for(m=1;
m<
m++)
printf("
%d"
a[m]);
P所有串长超过k的字符串中后面的字符删除
函数fun的功能是:
在形参ss所指字符串数组中,将所有串长超过k(K<
=N)。
的字符串中后面的字符删除,只保留前面的k个字符。
ss所指字符串数组中共有M(M<
=5)个字符串,且串长小于N(N<
=10)。
voidfun(charss[][11],intM,intk)
/*******yourcodestart******/
inti=0;
while(i<
M)
ss[i][k]='
;
i++;
/******yourcodeend******/
intM,k,i;
charss[5][11];
M);
k);
gets(ss[0]);
gets(ss[i]);
fun(ss,M,k);
puts(ss[i]);
Q字符串按长度由短到长进行排序
voidfun(charss[][11],intM)
char*ps[5],*tp;
inti,j,k;
i++)ps[i]=ss[i];
M-1;
k=i;
for(j=i+1;
if(strlen(ps[k])>
strlen(ps[j]))
k=j;
tp=ps[i];
ps[i]=ps[k];
ps[k]=tp;
puts(ps[i]);
{intM,i;
i++)gets(ss[i]);
fun(ss,M);
R补齐字符串
求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。
字符串数组中共有M(M<
=5)个字符串,且串长小于N。
(N<
=10)
{inti,j,k=0,n,m,len;
{len=strlen(ss[i]);
if(i==0)n=len;
if(len>
n)
n=len;
i<
i++)
if(i!
=k)
{m=n;
(最大长)
len=strlen(ss[i]);
for(j=len;
j>
=0;
j--)
ss[i][m--]=ss[i][j];
j<
n-len;
j++)
ss[i][j]='
i++)puts(ss[i]);
S每个单词的第一个字母改成大写
读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里"
单词"
是指由空格隔开的字符串)。
#include"
ctype.h"
string.h"
voidupfst(char*p)
if(*p!
*p=toupper(*p);
p++;
for(;
*p;
p++)
if(*(p-1)=='
'
*p!
*p=toupper(*p);
charchrstr[81];
gets(chrstr);
upfst(chrstr);
chrstr);
T文本分析2
函数fun的作用是:
统计整型变量m中各数字出现的次数,并存放到数组a中,其中:
a[0]存放0出现的次数,a[1]存放1出现的次数,……a[9]存放9出现的次数
voidfun(intm,inta[10])
{inti;
for(i=0;
10;
a[i]=0;
while(m>
0){
i=m%10;
a[i]++;
m=m/10;
{
intm,a[10],i;
&
fun(m,a);
for(i=0;
i++)
U删除所有串长超过k的字符串
从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数,并输出剩下的字符串。
=10)),
intfun(charss[][11],intM,intk)
inti,j=0,l;
l=strlen(ss[i]);
if(l<
strcpy(s