a[j]=t;
}
printf("\n\n从小到大排序后\n\n");
for(inti=0;i<10;i++)printf("%d",a[i]);
printf("\n\n");
}
//-------------------------------------------------------------------------------------------------
编写c9_1.c程序,输出一个3X3的矩阵,将该3X3的矩阵转置之后再次输出。
要求:
转置前,用赋初值的方法定义二维数组表示的矩阵。
#include
voidmain()
{
inta[3][3]={{0,0,3},{1,3,2},{3,4,5}};
printf("转置前的数组");
for(inti=0;i<3;i++)
{
printf("\n");
for(intj=0;j<3;j++)
printf("%5d",a[i][j]);
}
printf("\n转置后的数组");
for(inti=0;i<3;i++)
{
printf("\n");
for(intj=0;j<3;j++)
printf("%d",a[j][i]);
}
printf("\n");
}
//-------------------------------------------------------------------------------------------------
编写c9_2.c程序,从键盘上任意输入一个字符串和字符,要求从该字符串中删除所有的该字符。
#include
voidmain()
{
printf("请输入字符串\n");
chars1[100];
charc=getchar();//gets(s1);
inti;
for(i=0;(i<100)&&(c!
='\n');i++){s1[i]=c;c=getchar();}
s1[i]='\0';
printf("\n\n请输入要删除的字符\n");
charx;
scanf("%c",&x);
chars2[100];
intj=0;
for(i=0;i<100&&s1[i]!
='\0';i++)
{
if(s1[i]!
=x){s2[j]=s1[i];j++;}
}
s2[j]='\0';
printf("\n\n删除后的字符串\n%s\n\n",s2);
}
另一方法:
用一个字符串数组
#include
voidmain()
{
printf("请输入字符串\n");
chars1[100];
charc=getchar();//gets(s1);
inti;
for(i=0;(i<100)&&(c!
='\n');i++){s1[i]=c;c=getchar();}
s1[i]='\0';
printf("\n\n请输入要删除的字符\n");
charx;
scanf("%c",&x);
intj=0;
for(i=0;i<100&&s1[i]!
='\0';i++)
{
if(s1[i]==x)
{
for(j=i+1;j<100&&s1[j]!
='\0';j++)s1[j-1]=s1[j];
s1[j-1]='\0';
i--;
}
}
printf("\n\n删除后的字符串\n%s\n\n",s1);
}
//-------------------------------------------------------------------------------------------------
从键盘上分别输入5个句子(每个句子最多30个字符),对这5个句子以从小到大的顺序输出。
#include
#include
voidmain()
{
chara[5][30];
chartempStr[30];
printf("请输入5个句子,每个句子不超过30个字符\n");
for(inti=0;i<5;i++)
{
charc=getchar();
intj=0;
while(c!
='\n')
{
a[i][j]=c;
j++;
c=getchar();
}
a[i][j]='\0';
}
for(inti=0;i<4;i++)
for(intj=0;j<4-i;j++)
{
if(strcmp(a[j],a[j+1])>0)
{
strcpy(tempStr,a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],tempStr);
}
}
printf("\n\n句子排序之后\n\n");
for(inti=0;i<5;i++)puts(a[i]);
}
//-------------------------------------------------------------------------------------------------
编写c10_1程序一个判断素数的函数,主函数中利用这个函数,打印出100与200之间的所有素数。
执行结果如下(每行打印5个数):
#include
voidmain()
{
inti,j=0;
intprime(int);
for(i=100;i<=200;i++)
{
if(prime(i))
{
printf("%5d",i);
j++;
if(j%5==0)printf("\n");
}
}
printf("\n");
}
intprime(intn)
{
inti,flag=1;
for(i=2;i{
if(n%i==0)flag=0;
}
return(flag);
}
//-------------------------------------------------------------------------------------------------
编写c10_2一个求n!
的函数,主函数中调用这个函数,计算sum=1!
+2!
+3!
+......+10!
执行结果如下:
#include
voidmain()
{
intjiecheng(int);
inti,j;
floatsum=0;
for(i=1;i<=10;i++)
{
j=jiecheng(i);
sum=sum+j;
}
printf("1!
+2!
+3!
+......+10!
=%f\n",sum);
}
intjiecheng(intn)
{
inti,s=1;
for(i=1;i<=n;i++)
{
s=s*i;
}
return(s);
}
//-------------------------------------------------------------------------------------------------
编写主函数和一个无返回值的函数voidprint_group(intx[],int,int),完成如下功能:
产生一个包含100个随机整数(1000~9999)的一维数组a。
由用户输入数组中的元素个数以及每行打印的个数,利用print_group函数,打印数组a。
从上述数组a中找出所有奇数,放入另一个数组b,调用print_group函数打印数组b(同样也要在调用函数前输入b的元素个数和每行打印个数)。
执行结果如下:
#include
#include
voidmain()
{
voidprint_group(intx[],int,int);
intm,n,i,a[100],j=0,b[100],g,h;
printf("请输入数组元素个数:
\n");
scanf("%d",&m);
printf("每行打印数据的个数:
\n");
scanf("%d",&n);
printf("原始数组:
\n");
for(i=0;i{
a[i]=1000+rand()%9000;
if(a[i]%2!
=0)
{
j++;
b[j-1]=a[i];
}
}
print_group(a,m,n);
printf("经统计,上述数组中有%d个奇数;\n",j);
printf("请输入数组元素个数:
\n");
scanf("%d",&g);
printf("每行打印数据的个数:
\n");
scanf("%d",&h);
printf("奇数数组:
\n");
print_group(b,g,h);
}
voidprint_group(intx[],intp,intq)
{
inti,j=0;
for(i=0;i
{
printf("%5d",x[i]);
j++;
if(j%q==0)printf("\n");
}
}
//-------------------------------------------------------------------------------------------------
编写函数,求两个数的和。
主函数中用随机函数产生两个2位数的整数,调用这个函数,出题给小学生做,并评判其输入的答案,答对给10分,答错不给分,共产生10道题,最后给出该生的成绩。
若总分大于或等于90,给出"成绩不错啊,继续保持哦!
"的评价;总分在60与90之间(即大于等于60,且小于90)给出"这次成绩不太好,下次好好努力!
"的评价;总分在60分以下,给出"不要气馁,你一定行的!
"评价。
执行结果如下:
#include
#include
#include
voidmain()
{
inti,j=0,m,n,p,s;
intsum(int,int);
srand((unsigned)time(NULL));//
for(i=0;i<10;i++)
{
m=10+rand()%10;
n=10+rand()%10;
s=sum(m,n);
printf("%d+%d=",m,n);
scanf("%d",&p);
if(p==s)
{
printf("答对了!
\n");
j++;
}
else
printf("不对吧,好好想想哦!
\n");
}
printf("本次测试得分:
%d\n",j*10);
if(j>=9)printf("成绩不错啊,继续保持哦!
");
elseif(j<6)printf("不要气馁,你一定行的!
");
else
printf("这次成绩不太好,下次好好努力!
\n");
}
intsum(intx,inty)
{
intsum;
sum=x+y;
return(sum);
}
前一个程序的rand函数:
产生的随机数每次都是一样的,在单个程序里运行,如:
for循环,每次循环的值还是不一样.
只是再运行这个程序的话,和前一次一样.
这个程序:
产生的随机数是不一样的.为什么呢?
srand((unsigned)time(NULL));
就是给随机数产生一个seed,我们就叫他种子吧.
time的值每时每刻都不同.
所以种子不同,所以...产生的随机数也不同..
就这个道理.
//-------------------------------------------------------------------------------------------------
编写程序clabex_11_1.c,当输入两个整数时,将这两个数作为使用宏时的实参,并输出它们两个数中更大数的值。
#include
#defineBIGGER(x,y)x>y?
x:
y
voidmain()
{
inta,b,t;
printf("inputtwointegera,b:
");
scanf("%d,%d",&a,&b);
printf("Thebiggeris%d\n",BIGGER(a,b));
}
//-------------------------------------------------------------------------------------------------
编写程序c11_2.c,定义一个宏对给定年份year判断该年是否是闰年。
要求完成后如下图所示,完成后将文件上传到“交作业空间”。
#include
#defineLEAP_YEAR(y)(y%400==0)||(y%4==0&&y%100!
=0)
voidmain()
{
intx;
printf("inputyear:
");
scanf("%d",&x);
if(LEAP_YEAR(x))
printf("%disaleapyear.\n",x);
else
printf(