1.求整数序列中出现次数最多的数
#include<stdio.h>
int main()
{
int N,i,j,count=0,max,n;
scanf("%d",&N);
int a[5];
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);//输入n个数
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(a[i]==a[j])
count++;//出现的次数
if(i==0)
{
max=count;//第一次比较,n放下标,max放次数
n=i;
}
if(i!=0&&count>max)
{
max=count;
n=i;
}
}
count=0;//每次循环,count为0
}
printf("%d %d",a[n],max);
}
2.找鞍点
#include<stdio.h>
int main()
{
float a[3][3],max,min;
int i,j,k,maxk,mink,flag=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%f",&a[i][j]);
}//输入矩阵
}
for(i=0;i<3;i++)
{
max=a[i][0];//最大值为每行的第一个元素
maxk=0;//代表列的值
for(j=0;j<3;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
maxk=j;
}
}
min=a[0][maxk];//以找到的最大值为基准列
mink=0;
for(k=1;k<3;k++)
{
if(a[k][maxk]<min)//这列的第二个元素要是小于第一个元素
{
min=a[k][maxk];
mink=k;
}
}
if(i==mink)//该行最大该列最小,
{
flag=1;
printf("鞍点在第%d行,%d列,为%f:",mink+1,maxk+1,a[mink]1[maxk]);
}
}
if(!flag)
printf("找不到");
}
3.输入十个整数,将这是个整数按升序排列输出,并且奇数前,偶数后。
#include<stdio.h>
int main()
{
int i,j,n,t,a[10]={0},odd=0,even=9;
for(i=0;i<10;i++)
{
scanf("%d",&n);
if(n%2!=0)
a[odd++]=n;//奇数放在数组的左边
else
a[even--]=n;//偶数放在数组的右边
}
for(i=0;i<odd-1;i++)
{
n=i;//若第一个元素最小
for(j=1+i;j<odd;j++)
{
if(a[j]<a[n])
n=j;
}
if(n!=i)
{
t=a[i];
a[i]=a[n];
a[n]=t;
}
}
for(i=odd;i<9;i++)
{
n=i;
for(j=i+1;j<10;j++)
{
if(a[j]<a[n])
n=j;
}
if(n!=i)
{
t=a[i];
a[i]=a[n];
a[n]=t;
}
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
4.输入任意六个整数,按下面方阵打印
123456
612345
561234
456123
345612
234561
#include<stdio.h>
int main()
{
int i,j,t,a[6];
for(i=0;i<6;i++)
{
scanf("%d",&a[i]);//输入六个数字
}
printf("\n");
for(i=0;i<6;i++)//做6行
{
for(j=0;j<6;j++)
printf("%d",a[j]);//每行输出
printf("\n");
t=a[5];//把第五个元素和第一个交换
for(j=5;j>0;j--)//做5行
{
a[j]=a[j-1];
}
a[0]=t;
}
}
5.输入5*5矩阵两条对角线上各元素之和,两条对角线上行列下标都为偶数的各元素之积
#include<stdio.h>
int main()
{
int a[5][5],i,j,sum=0,mul=1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("\n");
for(i=0;i<5;i++)
{
sum+=a[i][i];//累加
if(i!=2)
sum+=a[i][4-i];//不重复添加元素
if(i%2!=0)//先判断若为奇数不*
continue;
mul*=a[i][i];
if(i!=2)//不重复*
mul*=a[i][4-i];
}
printf("sum=%d mul=%d\n",sum,mul);
}
6.将用户输出的字符串中的所有字符‘c’删除并输出
#include<stdio.h>
#include<string.h>
int main()
{
char str[20],strcmp[20],ch;
int i,j,l;
printf("请输入字符串:");
gets(str);
printf("请输入要删除的字符:");
ch=getchar();
l=strlen(str);
for(i=0,j=0;i<l;i++)
{
if(str[i]!=ch)
strcmp[j++]=str[i];
}
strcmp[j]='\0';
strcpy(str,strcmp);
printf("删除后的字符:");
//puts(str) ;
printf("%s\n",str);
}
7.将字符串中连续的空格保留一个
#include<stdio.h>
#include<string.h>
int main()
{
char b[61];//定义一个数组
int i;
gets(b);//获取元素
for(i=1;b[i]!='\0';i++)
{
if(b[i-1]==' '&&b[i]==' ')
{
strcpy(b+i-1,b+i);
i--;
}
}
puts(b);
}
8.统计单词个数
#include<stdio.h>
#include<string.h>
int main()
{
char s[20],c1,c2;
int i=0,n=0;
gets(s);
while(s[i]!='\0')
{
c1=s[i];
if(i==0)//附加条件
c2=' ';
else//与前一个数比较
c2=s[i-1];
if(c1!=' '&&c2==' ')
n++;
i++;
}
printf("%d",n);
}
9.将一正整数序列重新排列成一个新的序列,将比第一个元素小的放在前面,比他大的放在他的后面
*#include<stdio.h>
int main()
{
int a[9]={3,5,8,9,1,2,4,6,7};
int i,j,k,val,num;
val=a[0];
for(j=0;j<9;j++)
{
if(a[j]<val)
{
num=a[j];//把小的数保存起来
for(k=j;k>0;k--)
{
a[k]=a[k-1];//把前面的数往后面移
}
a[0]=num;
}
}
for(j=0;j<9;j++)
{
printf("%3d",a[j]);
}
}
10.输出一个字符串,再输入一个字符,统计并输出该字符在字符串中出现的次数
#include<stdio.h>
#include<string.h>
int main()
{
char str[20],ch;
int i=0,num=0;
gets(str);
ch=getchar();
while(str[i])
{
if(str[i]==ch)
num++;
i++;
}
printf("出现了%d次",num);
}
11.一个存放在数组中的序列循环右移,使后边的m个数存放在数列的开头,m键盘输入
#include<stdio.h>
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},i,j,m,temp;
scanf("%d",&m);//循环几次
for(i=0;i<m;i++)
{
temp=a[0];
for(j=0;j<10-1;j++)
{
a[j]=a[j+1];
}
a[9]=temp;
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
12.数字对应火柴棒个数
#include<stdio.h>
int main()
{
int n,b[100],a[10]={6,2,5,5,4,5,6,3,7,6},s;
while(scanf("%d",&n)!=EOF)
{
s=0;
while(n)
{
s+=a[n%10];
n/=10;
}
printf("%d\n",s);
}
}
11.输入一字符串,找到最大的字符并在后面加上max
#include<stdio.h>
#include<string.h>
int main()
{
char str[101],maxCh;
while (true)
{
gets(str);
maxCh = str[0];//加入最大的字母是第一个
for (int i = 1; i < strlen(str); ++i)
if (str[i] > maxCh)
maxCh = str[i];
for (int i = 0; i < strlen(str); ++i)
{
printf("%c", str[i]);//一个一个输出字母
if (str[i] == maxCh)//遇到了最大的字母就输出max
printf("(max)");
}
printf("\n");
}
return 0;
}
12.删除前面的*
#include<stdio.h>
#include<string.h>
void fun( char *a )
{
char *p;
int len;
int i;
p=a;
len=strlen(a); // 求字符串长度
for(i=0;i<len;i++)
{
if((a[i]!='*') && (a[i]<'A'|| a[i]>'Z') && (a[i]<'a'|| a[i]>'z')) // 字符串合法性检查
{
//printf("输入的数组格式不对!\n");
return;
}
}
for(i=0;i<len;i++)
{
if('*' == a[i]) // 查找开头属于*的字符串
{
p++; // 如果一直是*号,指针p跳到下一个
if(a[i+1]!='*') // 判断数组的下一个元素是不是*号
{
break;
}
}
}
i=0;
while(*p!='\0') // 将数组a通过指针p来改变,重新赋值。去除开头的*号部分
{
a[i]=*p;
p++;
i++;
}
a[i]='\0'; // 最后要加上结束符
}
int main()
{
char s[81];
gets(s);
fun(s);
puts(s);
}
13.求平均值,除去最大最小值
#include<stdio.h>
int main()
{
int i,j,min,max,n,a[200],sum=0;
float aver;
printf("输入几个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
max=a[0];
min=a[0];
for(i=1;i<n;i++)
{
if(max<a[i])
max=a[i];
}
for(i=1;i<n;i++)
{
if(min>a[i])
min=a[i];
}
aver=(sum-max-min)/(n-2);
printf("平均值为:%f",aver);
}
14.字符数组中在指定位置插入字符
#include<stdio.h>
#include<string.h>
int main()
{
char str[20] = {0},ch;
char b[20] = {0};
int m, i, length;
int j = 0;
char c;
printf("请输入字符串:");
//scanf("%s", str);
//getchar();//也可以
gets(str) ;
printf("请输入插入位置:");
scanf("%d", &m);
getchar(); //消除enter影响
printf("请输入插入元素:");
scanf("%c",&c);//插入空格也是可以的
length = strlen(str);
for(i = m-1; i <= length; i++)
{
b[j] = str[i];//把要插入元素的位置后面的东西放到b中
j++;
}
str[m-1] = c;
j = 0;
for(i = m; i <= length; i++)
{
str[i] = b[j];//把b中的元素放入插入后的不完整字符串中
j++;
}
printf("结果:%s\n", str);
return 0;
}
15,在字符数组中指定开始位置插入字符串
#include<stdio.h>
#include<string.h>
int main() //字符数组中在指定位置插入字符串
{
char a[20] = {0};
char b[20] = {0};
char c[20] = {0};
int i, j = 0, n, lengtha, lengthb, lengthc;
printf("请输入字符串:");
scanf("%s", a);
getchar();
printf("请输入插入字符串:");
scanf("%s", b);
getchar();
printf("请输入插入位置:");
scanf("%d", &n);
getchar();
lengtha = strlen(a);
lengthb = strlen(b);
for(i = n; i < lengtha; i++)
{
c[j] = a[i];//dsfdsf第二个位置插入,从二开始到后面放在c中
j++;
}
lengthc = j;//后面的长度
j = n;
for(i = 0; i < lengthb; i++)
{
a[j] = b[i];//把要插入的字符串放在d第n个位置
j++;
}
for(i = 0; i < lengthc; i++)
{
a[j] = c[i];//把分隔的字符串放在要插入的后面
j++;
}
printf("结果:%s\n",a);
return 0;
}
16.判断数组s中的字符串是不是回文。一个字符串从左向右读和从右向左读是一样的,读字符串是回文。例如:字符串“abcdedcba”是回文。
#include<stdio.h>
#include<string.h>
int main()
{
char s[80];
int i, j, n;
printf("Input a character string: \n");
gets(s);
n = strlen(s);
for(i = 0, j = n - 1; i < j; i++, j--)
{
if(s[i] != s[j])
break;
}
if(i >=j)
printf("回文\n");
else
printf("非回文\n");
return 0;
}
17.输出数组s中字符串的子串,子串从s[begin]开始,长度为len。
#include<stdio.h>
int main()
{
char s[80];
int begin, len;
gets(s);
scanf("%d%d", &begin, &len);
len += begin;
for(; begin < len; begin++)
printf("%c", s[begin]);
printf("\n");
return 0;
}
18.编写一个程序,把输入作为字符流读取,直至遇到 EOF。令其报告输入中的大写字母个数和小写字母个数。假设小写字母的数值是连续的,大写字母也是如此。或者你可以使用 ctypc,h 库中的合适的函数来区分大小写。
#include<stdio.h>
#include<ctype.h>
int main()
{
char ch;
int l = 0, u = 0;
printf("Please input some characters:\n");
while((ch = getchar()) != EOF) {
if(islower(ch))
l++;
if(isupper(ch))
u++;
}
printf("\nlower letter = %d,\nupper letter = %d.\n", l, u);
return 0;
}