陣列題庫施工完成啦(~ ̄▽ ̄)~
- 任意讀入10個整數存放到陣列a中,統計陣列中出現頻率最高的數,輸出該數及其出現次數,
(? ????嘗試改進一下大佬的代碼 原鏈接)
#include <stdio.h>
int main()
{
int a[10],b,c,x[10],max=0;
printf("a陣列元素為:");
for(b=0;b<10;b++)
{
scanf("%d",&a[b]);
printf("%d ",a[b]);
x[b]=0;
}
for(b=0;b<10;b++)
{
for(c=b;c<10;c++)//這樣回圈可以在多個相同數中只計入一個數出現次數的最大值
{
if(a[b]==a[c])
{
x[b]++;
}
}
}
printf("\n");
for(b=0;b<10;b++)
{
if(x[b]>=max)
{
max=x[b];
}
}
if(max==1)
printf("沒有重復出現的數");
if(max>1)
{
for(b=0;b<10;b++)
{
if(x[b]==max)
{
printf("陣列a中出現頻率最高的數是%d,出現次數為%d\n",a[b],x[b]);
}
}
}
}
2.任意讀入10個整數存放到陣列a中,在main()中完成如下功能,找出其中最大的數,給出其在陣列中的位置,如果非只一個最大數,則需要給出所有的最大數在陣列中的位置,
#include<stdio.h>
int main()
{
int a[10],i,max;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0,max=0;i<10;i++)
{
if(a[i]>max)
max=a[i];
}
printf("最大值是%d,其在陣列中位置是",max);
for(i=0;i<10;i++)
{
if(a[i]==max)
printf("%d",i);
}
}
3.輸入一個長度為8的整型陣列,求出并輸出該陣列的平均值(保留1位小數),輸出陣列中大于等于平均值的陣列值,
#include<stdio.h>
int main()
{
int a=0,i=0;
float x[8],avg=0;
for(;a<8;a++)
{
scanf("%f",&x[a]);
avg+=x[a];
}
avg=avg/8;
printf("平均值是%.1f\n",avg);
printf("大于平均值的資料是");
for(;i<8;i++)
{
if(x[i]>avg)
printf("%.f ",x[i]);
}
}
4.分別輸入兩個長度為5的從小到大排好序的整數陣列,將這兩個陣列合并到第三個陣列中,保持從小到大的排序,并輸出,
#include<stdio.h>
int main()
{
int a[5],b[5],c[10];
int i,n,temp,index;
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
c[i]=a[i];
}
for(i=0;i<5;i++)
{
scanf("%d",&b[i]);
c[i+5]=b[i];
}
for(i=0;i<10;i++)
{
index=i;
for(n=i+1;n<10;n++)
if(c[n]<c[index])
index=n;
temp=c[index];
c[index]=c[i];
c[i]=temp;
}
for(i=0;i<10;i++)
printf("%d ",c[i]);
}
5.輸入一個4行4列的單精度陣列,計算主對角線元素之和,保留1位小數輸出,
(這憨憨做法,是當初沒預習到二維陣列時做的)
#include<stdio.h>
int main()
{
int a=0,i=0;
float x[4],y[4],z[4],o[4],b=0;
for(;a<4;a++)
{
scanf("%f",&x[a]);
scanf("%f",&y[a]);
scanf("%f",&z[a]);
scanf("%f",&o[a]);
}
b=x[0]+y[1]+z[2]+o[3];
printf("%.1f",b);
}
6.輸入一個2行3列的整數陣列,將其進行轉置(行和列元素交換)并輸出
(這憨憨做法,也是當初沒預習到二維陣列時做的)
#include<stdio.h>
int main()
{
int a=0,b=0,i=0;
int x[3],y[3];
for(;a<3;a++)
scanf("%d",&x[a]);
for(;b<3;b++)
scanf("%d",&y[b]);
for(;i<3;i++)
printf("%d %d\n",x[i],y[i]);
}
7.輸入一個3行2列的陣列,找出最大的元素值以及最大元素的行下標和列下標,并輸出,
#include <stdio.h>
int main()
{
int a[3][2];
int i,j,max=a[0][0],temp1,temp2;
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]>max)
{
max=a[i][j];
temp1=i;
temp2=j;
}
}
}
printf("max=a[%d][%d]=%d",temp1,temp2,max);
}
8.輸入一個2×3的矩陣,求每列的和
#include <stdio.h>
int main()
{
int a[2][3];
int i,j,k,sum;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0,sum=0;i<3;i++)
{
sum=a[0][i]+a[1][i];
printf("%d ",sum);
}
}
9.撰寫程式,從輸入的一行字串中抽取一部分(從第n個字符開始,抽取m個字符)構成一個新的字串,并輸出,n>0且n<=字串的長度,否則列印起始位置-n-越界
#include <stdio.h>
#include <string.h>
int main()
{
char s[100];
gets(s);
int n,m,a,b;
scanf("%d",&n);
scanf("%d",&m);
a=strlen(s);
if(n>0&&n<=a)
{
for( b=n,n=n-1;s[n]!='\0'&&n<=b+m-1;n++)
printf("%c",s[n]);
}
else
printf("起始位置%d越界",n);
}
10.輸入一個字串和一個特定字符,在字串中洗掉從該特定字符開始的所有字符,例如輸入字串為"abcdefg",特定字符為’d’,洗掉后的字串為"abc";輸入字串為"abcdefg",特定字符為’x’,則輸出“特定字符不存在”
(嘗試用了一下strchr()這個內置函式)
試了半天瘋狂報錯發現是scanf忘加&了=,=
#include <stdio.h>
#include <string.h>
int main()
{
char str[100],ch;
gets(str);
scanf("%c",&ch);
int i;
char *ret= strchr(str, ch);
printf("特定字符是%c\n",ch);
if(ret!=NULL)//如果沒有找到字符回傳NULL,
{
printf("洗掉特定字符%c后的字串是",ch);
for(i=0;i<100;i++)
{
if(str[i]==*ret)//此時*ret為ch后面的字符
break;
printf("%c",str[i]);
}
}
else
printf("特定字符不存在");
}
11.任意輸入一行字串保存在一維字符陣列中,判斷里面數字字符的個數,
#include<stdio.h>
int main()
{
char a[100];
int i,j;
gets(a);
for(i=0,j=0;a[i]!='\0';i++)
{
if(a[i]>='0'&&a[i]<='9')
j++;
}
printf("%d",j);
}
12.任意輸入兩行字串,把第二行字串連接到第一行字串末尾(不用strcat函式),
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],b[100];
gets(a);
gets(b);
int m=strlen(a),i;
for(i=0;i<100;i++)
{
a[m+i]=b[i];
}
puts(a);
}
13.任意輸一行字串(包括空格),求其長度(不用strlen函式),
#include<stdio.h>
int main()
{
char a[100];
int i;
gets(a);
for(i=0;a[i]!='\0';i++)
{}
printf("%d",i);
}
14.輸入m,n 和一個m*n矩陣 (最大為10 x 10),求他們的各行元素之和,
#include<stdio.h>
int main()
{
int m,n,a,b,avg;
int x[10][10];
scanf("%d%d",&m,&n);
for(a=0;a<m;a++)
for(b=0;b<n;b++)
scanf("%d",&x[a][b]);
for(a=0;a<m;a++)
{
avg=0;
for(b=0;b<n;b++)
{
avg=avg+x[a][b];
}
printf("第%d行元素之和是%d\n",a,avg);
}
}
15.青年歌手參加歌曲大獎賽,有10個評委對她(他)進行打分,試編程求這位選手的平均得分并輸出(去掉一個最高分和一個最低分,保留2位小數),
#include<stdio.h>
int main()
{
float sum =0,max,min,avg;
int i;
float a[10];
for(i=0;i<10;i++)
scanf("%f",&a[i]);
for(i=0,min=max=a[0];i<10;i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
sum+=a[i];
}
printf("最高分%.2f\n",max);
printf("最低分%.2f\n",min);
sum= sum-max-min;
avg = sum/8.0;
printf("最后得分%.2f\n",avg);
}
16.輸入n個(1<n<=10)正整數并保存到陣列中,求出最大值、最小值、平均值(保留2位小數),以及最大值、最小值在陣列中的下標分別是多少,
#include <stdio.h>
int main()
{
int a,n,sum,max=0,min=10,b1,b2;
float ave;
int s[10];
scanf("%d",&n);
for(a=0;a<n;a++)
{
scanf("%d",&s[a]);
sum+=s[a];
if(s[a]>max)
{max=s[a];
b1=a;}
if(s[a]<min)
{min=s[a];
b2=a;}
}
ave=sum/n;
printf("最大值%d\n",max);
printf("最大值下標%d\n",b1);
printf("最小值%d\n",min);
printf("最小值下標%d\n",b2);
printf("平均值%.2f",ave);
}
17.將n個數輸入到一維陣列,將值最大的陣列元素與值最小的陣列元素的位置對調
#include <stdio.h>
int main()
{
int a,n,max=0,min=10,temp1,temp2;
int x[10];
scanf("%d",&n);
for(a=0;a<n;a++)
{
scanf("%d",&x[a]);
if(x[a]>max)
{
max=x[a];
temp1=a;
}
if(x[a]<min)
{
min=x[a];
temp2=a;
}
}
x[temp1]=min;
x[temp2]=max;
for(a=0;a<n;a++)
printf("%d ",x[a]);
}
18.從鍵盤輸入10個整數并保存到陣列,要求找出最小的數和它的下標,然后把它和陣列中最前面的元素對換位置,
#include<stdio.h>
int main()
{
int i,b,c;
int a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(b=0,i=1;i<10;i++)
{
if(a[i]<a[b])
{
b=i;
}
}
c=a[0];
a[0]=a[b];
a[b]=c;
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
19.給定一系列正整數,對每個正整數的每一位數字統計0~9各個數字的出現次數,求出現次數最多的數字,
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int a,b,c,n,max=0;
int q[10]={0};
scanf("%d",&n);
for(a=0;a<=n-1;a++)
{
scanf("%s",str);
for(b=0;str[b]!='\0';b++)
for(c=0;c<9;c++)
if(str[b]==c+'0')
q[c]++;
}
for(a=0;a<10;a++)
if(q[a]>max)
max=q[a];
printf("出現次數最多%d次的數字是 ",max);
for(a=0;a<10;a++)
if(q[a]==max)
printf("%d " ,a);
}
20.從鍵盤上讀入一個數,從一個已知的陣列中洗掉這個數,
要求使用陣列初始化陳述句為: int a[15]={1,4,6,9,9,6,19,4,4,8,12,1,9,18,19};
n為陣列元素的個數,初始值n=15, 程式的輸出陳述句為必要代碼:
for(i=0;i<n;i++)
printf("%d ",a[i]);
#include<stdio.h>
#define M 20
int fun(int a[],int n, int y);
int main()
{ int a[15]={1,4,6,9,9,6,19,4,4,8,12,1,9,18,19}, n=15, y, k,i;
scanf("%d",&y);
n = fun(a, n, y);
for(i=0; i<n; i++ )
printf("%d ",a[i]);
printf("\n");
return(0);
}
int fun(int a[],int n, int y)
{
int k,j;
for(k=0;k<n; k++)
{
if(a[k]==y)
{
for(j=k;j<n-1;j++)
{
a[j]=a[j+1];
}
n--;
k--;
}
}
return n;
}
21.用空格或換行分開的字串稱為單詞,輸入多行字串,直到遇到了單詞 “stop” 時才停止,最后輸出單詞的數量,用于分割單詞的空格或換行可能多于1個,單詞數量不包括"stop" ,
strcmp()函式的運用|?・ω・` )
#include<stdio.h>
#include<string.h>
int main()
{
char str1[100],str2[5]="stop";
int i,n;
for(i=0;n!=0;i++)
{
scanf("%s",str1);
n=strcmp(str1,str2);
}
printf("%d",i-1);
}
22.任意輸入一個自然數,輸出該自然數的各位數字組成的最大數,例如,輸入 1593 ,則輸出為 9531 ,
可以看成一個字串排序的問題( ̄▽ ̄)/
#include <stdio.h>
#include <string.h>
int main()
{
char s[100],r[100];
gets(s);
int a,b,t,k;
int i=strlen(s);
for(a=0;s[a+1]!='\0';a++)
{
for(b=a;s[b]!='\0';b++)
{
if(s[a]>s[b])
{
t=s[a];
s[a]=s[b];
s[b]=t;
}
t=0;
}
}
for(a=0;a<i;a++)
r[a]=s[i-a-1];
puts(r);
}
23.題目:輸入一個小于8位數的正整數,判斷它是不是回文數,即12321是回文數,
回文數對稱數這類題的演算法基本一樣,題庫差不多有四道這樣的題? ????
#include<stdio.h>
int main( )
{ int n,temp1,temp2=0;
scanf("%d",&n);
temp1 = n;
while(n)
{
temp2*=10;
temp2=temp2+n%10;
n/=10;
}
if(temp1 == temp2)
printf("這是個回文數");
else
printf("這不是回文數");
}
24.有一篇文章,共有多行文字(不超過10行), 最后一行為end,要求分別統計出其中英文大寫字母、小寫字母、空格以及其它字符的個數,統計結果不包括最后一行的end,
#include <stdio.h>
#include <string.h>
int main()
{
char str[80];
int a=0,b=0,c=0,d=0,e=0,i,j,k;
gets(str);
while(strcmp(str,"end")!=0)
{
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='A'&&str[i]<='Z')
a++;
else if(str[i]>='a'&&str[i]<='z')
b++;
else if(str[i]>='0'&&str[i]<='9')
c++;
else if(str[i]==' ')
d++;
else
e++;
}
gets(str);
}
printf
("大寫字母有%d個\n"
"小寫字母有%d個\n"
"數字有%d個\n"
"空格有%d個\n"
"其他字符有%d個",a,b,c,d,e);
}
25.用選擇法對10個整數從小到大排序,這10個整數需要輸入,
#include <stdio.h>
int main()
{
int a[10];
int i,min,j,t;
for(i=0;i<10;i++)
scanf("%d",a+i);
for (i=0;i<9;i++)
{
for (min=i,j=i+1;j<10;j++)
if(a[j]<a[min])
min=j;
t=a[min];
a[min]=a[i];
a[i]=t;
}
for(i=0;i<10;i++)
printf("%d ",*(a+i));
}
要求選擇法排序由以下陳述句實作,
解題要求
26.已有一個已從小到大排好序的陣列,要求輸入一個數要求按原來排序的規律將它插入陣列中,
要求使用陣列初始化陳述句為: int a[11]={1,4,6,9,13,16,19,28,40,100}
#include <stdio.h>
int main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int i,t,x,k;
scanf("%d",&x);
a[k]=x;
for(i=0;i<11;i++)
{
if(a[k]<a[i])
{
k=i;
for(i=10;i>k;i--)
{
a[i]=a[i-1];
}
a[i]=x;
break;
}
else if(x>a[9])
a[10]=x;
}
for(i=0;i<11;i++)
printf("%d ",a[i]);
return 0;
}
27.列印出n行楊輝三角形(要求輸入n的值,n<=10),
#include<stdio.h>
int main()
{
int i,j,n,a[11][11]={0};
scanf("%d",&n);
for(i=0;i<n;i++)
a[i][0]=1;
for(i=1;i<n;i++)
for(j=1;j<n;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
28.將不多于10個的正整數輸入到陣列a[ ]中,以-1作為結束符, 要求陣列的值按逆序重新存放并輸出(不包含-1),
#include<stdio.h>
int main()
{
int i,index,n,c;
int a[10],b[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
if(a[i]==-1)
break;
n=i+1;
}
for(i=0;i<=n;i++)
{
b[n-i-1]=a[i];
}
for(i=0;i<=n;i++)
a[i]=b[i];
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/240056.html
標籤:其他
