7-1 输入组数的五个元素,并依次后移一个位置,再将第五个数据放在第一个存储位置
#include <stdio.h>
int main(void) {
int a[5],t,i;
printf("原始序列为\r\n");
for(i=0;i<5;i++){
scanf("%d",&a[i]);
printf("%d ",a[i]);
}
t=a[4];
for(i = 4;i>0;i--){
a[i]=a[i-1];
}
printf("\n操作之后的序列为:\r\n");
a[0]=t;
for(i=0;i<5;i++){
printf("%d ",a[i]);
}
return 0;
}
/*input
1 2 3 4 5
*/
/*
原始序列为
1 2 3 4 5
操作之后的序列为:
5 1 2 3 4
*/
7-2 求具有10个元素的一维数组中正数、负数及0 的个数
7-3 利用数组计算斐波那契数列的前20个数,并以每行5个数输出
#include <stdio.h>
int main(void) {
int i,f[20]={1,1};
for(i=2;i<20;i++){
f[i]=f[i-1]+f[i-2];
}
for(i=0;i<20;i++){
if(i%5==0)
printf("\n");
printf("%-6d ",f[i]);
}
return 0;
}
/*input
*/
/*
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
*/
7-4 采用冒泡,对一维数组中的元素数据进行按小到大的排序
#include <stdio.h>
int main(void) {
int i,j,n,temp,a[10];
scanf("%d",&n);
printf("The original numbers:\r\n");
for(i=0;i<n;i++){
scanf("%d",&a[i]);
printf("%d ",a[i]);
}
for(i=0;i<n-1;i++){
for(j=1;j<n-i;j++){
if(a[j-1]>a[j]){
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
}
printf("\nthe sorted nember is:\r\n");
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
return 0;
}
/*input
10
9 8 5 6 2 3 4 8 6 52
*/
/*
The original numbers:
9 8 5 6 2 3 4 8 6 52
the sorted nember is:
2 3 4 5 6 6 8 8 9 52
*/
7-5 将矩阵 a2*3转置后存入b3*2
#include <stdio.h>
int main(void) {
int i,j,a[2][3]={{1,2,3},{5,6,8}},b[3][2];
printf("array a:\r\n");
for(i=0;i<2;i++){
for(j=0;j<3;j++){
printf("%d ",a[i][j]);
b[j][i]=a[i][j];
}
printf("\r\n");
}
printf("array b:\r\n");
for(i=0;i<3;i++){
for(j=0;j<2;j++){
printf("%d ",b[i][j]);
}
printf("\r\n");
}
return 0;
}
/*input
NULL
*/
/*
array a:
1 2 3
5 6 8
array b:
1 5
2 6
3 8
*/
7-6 求矩阵 C3*4所有外围元素之和
#include <stdio.h>
int main(void) {
int i,j,a[3][4]={{1,2,3,5},{5,6,8,8},{9,4,2,5}},sum=0;
printf("array a:\r\n");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d ",a[i][j]);
}
printf("\r\n");
}
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(i==0 || i==2 ||j== 0 ||j==3)
sum+=a[i][j];
}
}
printf("sum = %d ", sum);
return 0;
}
/*input
NULL
*/
/*
array a:
1 2 3 5
5 6 8 8
9 4 2 5
sum = 44
*/
7-7 求一个班10名学生4门课的平均成绩
注:包含随机数的使用
#include <stdio.h>
#include <math.h>
#include <time.h>
int main(void) {
int i,j,grade[10][4],sum=0;
double ave;
//为了产生不同的数据,重置随机数种子
srand(time(NULL));
for(i=0;i<10;i++){
for(j=0;j<4;j++){
grade[i][j]=rand()%90+10;
}
}
for(i=0;i<10;i++){
sum=0;
for(j=0;j<4;j++)
sum+=grade[i][j];
ave=sum/4.0;
printf("the average score of %d student is %5.1f\r\n",i,ave);
}
return 0;
}
/*input
NULL
*/
/*
the average score of 0 student is 22.5
the average score of 1 student is 73.2
the average score of 2 student is 52.8
the average score of 3 student is 61.0
the average score of 4 student is 29.0
the average score of 5 student is 49.2
the average score of 6 student is 71.5
the average score of 7 student is 22.5
the average score of 8 student is 27.0
the average score of 9 student is 72.8
*/
7-8 找出任意二维数组中的鞍点。即该位置上的元素所在的行最大而所在列最小。要求输出鞍点位置,无鞍点时给出有关信息。
#include <stdio.h>
#include <math.h>
#include <time.h>
int main(void) {
int i,j,k,max,jj,flag,a[3][4]={{1,9,7,6},{4,6,0,5},{8,7,8,2}};
for(i=0;i<3;i++){
max=a[i][0];
for(j=0;j<4;j++){
if(a[i][j]>max){
max=a[i][j];
jj=j;
}
}
for(k=0;k<3;k++)
if(a[k][jj]<max) break;
if(k>=3){
printf("鞍点所在的行和列为:%d,%d,鞍点为%d",i,jj,a[i][jj]);
flag=1;
}
}
if(flag == 0)
printf("无鞍点");
return 0;
}
/*input
NULL
*/
/*
鞍点所在的行和列为:1,1,鞍点为6
*/
7-9 求两矩阵的乘积 a 2*3,b3*4,得到 c2*4
#include <stdio.h>
#include <math.h>
#include <time.h>
int main(void) {
int i,j,k;
int a[2][3],b[3][4],c[2][4];
srand(time(NULL));
printf("\r\na is\r\n");
for(i=0;i<2;i++){
for(j=0;j<3;j++){
a[i][j]=i-j;
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\r\nb is\r\n");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
b[i][j]=i+j;
printf("%d ",b[i][j]);
}
printf("\n");
}
for(i=0;i<2;i++){
for(j=0;j<4;j++){
c[i][j]=0;
for(k=0;k<3;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}
printf("\r\nc is\r\n");
for(i=0;i<2;i++){
for(k=0;k<4;k++){
printf("%d ",c[i][k]);
}
printf("\n");
}
return 0;
}
/*input
NULL
*/
/*
a is
0 -1 -2
1 0 -1
b is
0 1 2 3
1 2 3 4
2 3 4 5
c is
-5 -8 -11 -14
-2 -2 -2 -2
*/
7-10 编写程序输出”I am a good boy“
#include <stdio.h>
#include <math.h>
#include <time.h>
int main(void) {
char c[]={'I',' ','a','m',' ','a',' ','g','i','r','l'};
int i;
for(i=0;i<11;i++){
printf("%c ",c[i]);
}
return 0;
}
/*input
NULL
*/
/*
I a m a g i r l
*/
7-11 打印菱形图案
#include <stdio.h>
#include <math.h>
#include <time.h>
#define L 3 //基准行上边或下边的行数
#define Z 2*L+1 //菱形的总行数
int main(void) {
int m,n;
for(m=-L;m<=L;m++){
for(n=0;n<abs(m);n++){
printf(" ");
}
for(n=0;n<Z-2*abs(m);n++)
printf("*");
printf("\n");
}
return 0;
}
/*input
NULL
*/
/*
*
***
*****
*******
*****
***
*
*/
7-12 文章有N行,每行80个字符。分别统计英文大小写、数字、空格及其他字符的个数
#include <stdio.h>
#include <math.h>
#include <time.h>
#define N 2
int main(void) {
int i,j;
int upp,low,dig,spa,oth;
char ch[N][81];
upp=low=dig=spa=oth=0;
for(i=0;i<N;i++){
printf("Please input the line %d\r\n",i);
gets(ch[i]);
for(j=0;j<80&&ch[i][j]!='\0';j++){
if(ch[i][j]>='A'&&ch[i][j<='Z']) upp++;
else if(ch[i][j]>='a'&&ch[i][j<='z']) low++;
else if(ch[i][j]>='0'&&ch[i][j<='0']) dig++;
else if(ch[i][j]==' ') spa++;
else
oth++;
}
}
for(i=0;i<N;i++)
printf("%s\n",ch[i]);
printf("upp = %d\r\n",upp);
printf("low = %d\r\n",low);
printf("dig = %d\r\n",dig);
printf("spa = %d\r\n",spa);
printf("oth = %d\r\n",oth);
return 0;
}
/*input
NULL
*/
/*
Please input the line 0
djslkafjdlskajfdklsajfdklsa3428048029483290 434343jfdksa
Please input the line 1
jkfdsja7834254397259432504382540932fdajfdsafjs rueqru888432
djslkafjdlskajfdklsajfdklsa3428048029483290 434343jfdksa
jkfdsja7834254397259432504382540932fdajfdsafjs rueqru888432
upp = 57
low = 0
dig = 56
spa = 11
oth = 0
*/
7-13 不使用strcat,将两个字符串连接起来
#include <stdio.h>
#include <math.h>
#include <time.h>
int main(void) {
char str1[20],str2[20];
int i=0,j=0;
printf("请输入第一个字符串\r\n");
gets(str1);
printf("请输入第二个字符串\r\n");
gets(str2);
while(str1[i]!='\0'){
i++;
}
while(str2[j]!='\0'){
str1[i++]=str2[j];
j++;
}
str1[i]='\0';
printf("连接后的字符串\r\n");
puts(str1);
return 0;
}
/*input
NULL
*/
/*
请输入第一个字符串
aaaa
请输入第二个字符串
bbbb
连接后的字符串
aaaabbbb
*/
7-14 输出若干字符串中最短的字符串
#include <stdio.h>
#include <math.h>
#include <time.h>
int main(void) {
char str1[80],min[80];
int k,len;
gets(str1);
strcpy(min,str1);
len=strlen(min);
gets(str1);
while(str1[0]!='\0'){
k=strlen(str1);
if(k<len){
len=k;
strcpy(min,str1);
}
gets(str1);
}
printf("len = %d,string is :%s\r\n",len,min);
return 0;
}
/*input
fdjskljfkldsa
fjkdja
fdsklafkds
fdkjkf
fdksjafkdsjafkdsjafklda
fdsajkjk
jjjjjjjjjjjjjjjjjjjj
jjj
kkkkkkkkkk
iiii
i
*/
/*
len = 1,string is :i
*/
本文展示了多个C语言程序,涵盖了数组的各种操作,包括元素移动、正负数计数、斐波那契数列计算、冒泡排序、矩阵转置、外围元素求和、平均成绩计算、鞍点查找、矩阵乘法、字符串操作、菱形图案打印、字符统计以及字符串连接。这些程序深入浅出地展示了数组、条件判断、循环和算法的应用。

1305

被折叠的 条评论
为什么被折叠?



