复习资料程序设计设计部分.docx
《复习资料程序设计设计部分.docx》由会员分享,可在线阅读,更多相关《复习资料程序设计设计部分.docx(16页珍藏版)》请在冰豆网上搜索。
复习资料程序设计设计部分
复习资料
程序设计部分主要包括程序设计的三大结构、及数组、指针的应用及函数等。
1、求和问题:
功能:
求给定正整数m以内的素数之和。
例如:
当m=20时,函数值为77。
#include
intfun(intm)
{/**********Program**********/
inti,k,s=0;
for(i=2;i<=m;i++)
{for(k=2;k
if(i%k==0)break;
if(k==i)s=s+i;
}
returns;
/**********End**********/
}
main()
{inty;
y=fun(20);
printf("y=%d\n",y);
}
2.矩阵计算(二维数组)功能:
在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和,并在fun()函数中输出。
#include
main()
{inti,j,s,a[3][3];;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
s=fun(a);
printf("Sum=%d\n",s);
}
intfun(inta[3][3])
{/**********Program**********/
intsum;
inti;
sum=0;
for(i=0;i<3;i++)
sum=sum+a[i][i]*a[i][i];
returnsum;
/**********End**********/
}
3.题目:
用函数求一个N阶方阵右下三角元素的和(包括副对角线上的元素)。
------------------------------------------------*/
#include
#include
#defineN3
intsum(inta[][N])
{
/**********Program**********/
inti,j,k=0;
for(i=0;ifor(j=N-1-i;jk=k+a[i][j];
return(k);
/**********End**********/
}
main()
{
inta[N][N],i,j;
for(i=0;i{
for(j=0;j{
a[i][j]=random(10)+10;
printf("%3d",a[i][j]);
}
printf("\n");
}
printf("===================\n");
printf("sum=%5d\n",sum(a));
}
4.计数问题
功能:
求小于lim的所有素数并放在aa数组中,该函数返回所求出素数的个数。
------------------------------------------------*/
#include
#include
#defineMAX100
intfun(intlim,intaa[MAX])
{
/**********Program**********/
intn=0;
inti,j;
for(i=2;i<=lim;i++)
{for(j=2;j
if(i%j==0)break;
if(j==i)aa[n++]=i;
}
returnn;
/**********End**********/
}
main()
{
intlimit,i,sum;
intaa[MAX];
printf("Pleaseinputainteger:
");
scanf("%d",&limit);
sum=fun(limit,aa);
for(i=0;iif(i%10==0&&i!
=0)printf("\n");
printf("%5d",aa[i]);
}
}
5.功能:
求一组数中大于平均值的数的个数。
例如:
给定的一组数为1,3,6,9,4,23,35,67,12,88时,函数值为3。
#include
intfun(inta[],intn)
{
/**********Program**********/
inti,k=0;
floats=0,ave;
for(i=0;is+=a[i];
ave=s/n;
printf("%f",ave);
for(i=0;iif(a[i]>ave)k++;
returnk;
/**********End**********/
}
main()
{inta[10]={1,3,6,9,4,23,35,67,12,88};
inty;
y=fun(a,10);
printf("y=%d\n",y);
}
6.字符串排序——题目:
任输入十个国家的名字,按由小到大排序。
#include
#include
voidmain()
{
chara[10][20],b[20];//用来保存国家的名字b表示中间变量
inti,j;//循环变量
/**********Program**********/
for(i=0;i<10;i++)
gets(a[i]);
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(strcmp(a[i],a[j])>0)
{strcpy(b,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],b);
}
/**********End**********/
for(i=0;i<10;i++)printf("%s\n",a[i]);
}
7.最大值问题:
功能:
把20个随机数存入一个数组,然后输出该数组中的最小值。
其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义
#include
#defineVSIZE20
intvector[VSIZE];
intfun(intlist[],intsize)
{/**********Program**********/
inti,min=0;
for(i=1;iif(list[min]>list[i])
min=i;
returnmin;
/**********End**********/
}
main()
{inti;
for(i=0;i{vector[i]=rand();
printf("Vector[%d]=%6d\n",i,vector[i]);}
i=fun(vector,VSIZE);
printf("\nMininum:
Vector[%d]=%6d\n",i,vector[i]);
}
9.字符串处理——功能:
从字符串中删除指定的字符。
同一字母的大、小写按不同字符处理。
例如:
若程序执行时输入字符串为:
turbocandborlandc++,从键盘上输入字符:
n,则输出后变为:
turbocadborladc++,如果输入的字符在字符串中不存在,则字
符串照原样输出。
#include
intfun(chars[],intc)
{/**********Program**********/
char*q=s;
for(;*q;q++)
if(*q!
=c)*(s++)=*q;
*s=0;
/**********End**********/
}
main()
{staticcharstr[]="turbocandborlandc++";
charch;
printf("原始字符串:
%s\n",str);
printf("输入一个字符:
");
scanf("%c",&ch);
fun(str,ch);
printf("str[]=%s\n",str);}
9.功能:
把20个随机数存入一个数组,然后输出该数组中的最大值。
#include
#defineVSIZE20
intvector[VSIZE];
intfun(intlist[],intsize)
{/**********Program**********/
inti,max=0;
for(i=1;iif(list[max]max=i;
returnmax;
/**********End**********/
}
main()
{inti;
for(i=0;i{vector[i]=rand();
printf("Vector[%d]=%6d\n",i,vector[i]);}
i=fun(vector,VSIZE);
printf("\nMaxnum:
Vector[%d]=%6d\n",i,vector[i]);
}
10.排序问题——功能:
对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按降序排列。
例如:
原来的字符串为CEAedca,排序后输出为CedcEAa。
#include
#include
#include
voidfun(char*s,intnum)
{/**********Program**********/
inti,j;
chart;
for(i=1;ifor(j=i+1;jif(s[i]
{t=s[i];s[i]=s[j];s[j]=t;}
/**********End**********/
}
main()
{chars[10];
printf("输入7个字符的字符串:
");
gets(s);
fun(s,7);
printf("\n%s",s);
}
11.二维数组计算
功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。
二维数组中的数已在主函数中赋予。
------------------------------------------------*/
#include
#include
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
/**********Program**********/
inti,j;
for(j=0;j{
pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]pp[j]=tt[i][j];
}
/**********End**********/
}
main()
{
intt[M][N]={{22,45,56,30},
{19,33,45,38},
{20,22,66,40}};
intp[N],i,j,k;
printf("Theoriginaldatais:
\n");
for(i=0;i{
for(j=0;jprintf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:
\n");
for(k=0;kprintf("\n");
}
12.功能:
编写程序,求矩阵(3行3列)与2的乘积
例如:
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
200400600
80010001200
140016001800
------------------------------------------------*/
#include
voidfun(intarray[3][3])
{
/**********Program**********/
inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
array[i][j]=array[i][j]*2;
/**********End**********/
}
main()
{
inti,j;
intarray[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
fun(array);
printf("Convertedarray:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
13.函数
功能:
编写函数判断一个整数m的各位数字之和能否被7整除,可以被7整除则返回1,否则返回0。
调用该函数找出100~200之间满足条件的所有数。
#include
intsub(intm)
{
/**********Program**********/
intk,s=0;
do
{s=s+m%10;
m=m/10;
}while(m!
=0);
if(s%7==0)k=1;
elsek=0;
return(k);
/**********End**********/
}
main()
{inti;
for(i=100;i<=200;i++)
if(sub(i)==1)
printf("%4d",i);
}
14.分段函数
功能:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。
例如:
当a=45,b=12。
调用该函数后,c=4251。
#include
voidfun(inta,intb,long*c)
{
/**********Program**********/
*c=a/10*1000+a%10*10+b/10+b%10*100;
/**********End**********/
}
main()
{inta,b;
longc;
printf("inputa,b:
");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:
%ld\n",c);
}
15.与正整数的各位数字分离相关的问题
功能:
从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。
例如:
当s中的数为:
7654321时,t中的数为:
642。
#include
longfun(longs,longt)
{/**********Program**********/
longsl=10;
s/=10;
t=s%10;
while(s>0)
{s=s/100;
t=s%10*sl+t;
sl=sl*10;
}
/**********End**********/
returnt;
}
main()
{longs,t=0,m;
printf("\nPleaseenters:
");scanf("%ld",&s);
m=fun(s,t);
printf("Theresultis:
%ld\n",m);
}
16.题目:
已知某班5名学生的三门课成绩。
试编写程序,输入这5个学生的三门课成绩a[5][3],输出每门课成绩的平均分vag[3]。
#include
voidmain()
{/**********Program**********/
floata[5][3],vag[]={0,0,0};
inti,j;
printf("每人一行的输入5名学生的三种成绩\n");
for(i=0;i<5;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
for(j=0;j<3;j++)
for(i=0;i<5;i++)
vag[j]=vag[j]+a[i][j];
for(j=0;j<3;j++)
vag[j]=vag[j]/5;
printf("课程一的平均分=%f\n课程二的平均分=%f\n课程三的平均分=%f\n",vag[0],vag[1],vag[2]);
/**********End**********/
}