1.键入字符串,统计字符数
#include<stdio.h>
main()
{
char str[80];
int i,cnt1=0,cnt2=0,cnt3=0,cnt4=0;
gets(str);
for(i=0; str[i]!='\0'; i++)
{
if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z') cnt1++;
else if(str[i]==' ') cnt2++;
else if(str[i]>='1'&&str[i]<='9') cnt3++;
else cnt4++;
}
printf("%d %d %d %d",cnt1,cnt2,cnt3,cnt4);
}
输入字符串的题,也可以用指针做,上面是用数组做的。这个只需要stdio一个文件就行了。
注意的是这个:
if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z') cnt1++;
这个当初&&写成||了,一直出不来。
2求极值
输入10个数,求极值
#include<stdio.h>
main()
{
int a[10],i,t,min,max;
for(i=0; i<10; i++)
scanf("%d",&a[i]);
min=max=a[0];
for(i=0; i<10; i++)
{
if(min>a[i])
min=a[i];
if(max<a[i])
max=a[i];
}
printf("%d %d",max,min);
}
输入的时候采用数组,scanf里面的地址别忘了加[ ]
scanf("%d",&a[i]);
将min和max都定位在开始位置
min=max=a[0];
然后比较大小,注意大括号
3 排序问题
给出一组数据进行排序。
要知道,比较的时候就要有ij一起出现的意识
比较交换法:
a[0]和剩下的比较,选出最小的,然后a[1]再去比较,以此类推
#include<stdio.h>
main()
{
int a[10],i,j,t;
for(i=0; i<10; i++)
scanf("%d",&a[i]);
for(i=0; i<9; i++)
{
for(j=i+1; j<10; j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(i=0; i<10; i++)
printf("%d ",a[i]);
}
选择法比较:
#include<stdio.h>
main()
{
int a[10],i,j,t,k;
for(i=0; i<10; i++)
scanf("%d",&a[i]);
for(i=0; i<9; i++)
{
k=i;
for(j=i+1; j<10; j++)
if(a[k]>a[j])
k=j;
if(k!=i)//
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
for(i=0; i<10; i++)
printf("%d ",a[i]);
}
冒泡法比较:和相邻的比较,将最大值沉下去
#include<stdio.h>
main()
{
int a[10],i,j,t,k;
for(i=0; i<10; i++)
scanf("%d",&a[i]);
for(i=0; i<9; i++)
for(j=0; j<10-i; j++)
if(a[j]>a[j+1])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
for(i=0; i<10; i++)
printf("%d ",a[i]);
}
向已经排好序的数组中,插入一个数
void insert(int a[],int n,int x)//将整数x插入到原有n个元素的a数组中
{
int i;
for (i=n;i>0 && x<a[i-1];i--)
a[i]=a[i-1]; //将所有大于x的元素向后移动一格,并且使i停留在x应该被插入的位置
a[i]=x;
}
#include <stdio.h>
int main()
{
int a[6];
int i,j,x;
for(i = 0; i < 5; i++)
scanf("%d",&a[i]);
scanf("%d",&x);
for(i = 0; i < 5; i++)
if(a[i] > x)
break;
for(j = 5; j > i; j--)
{
a[j] = a[j-1];
}
a[i] = x;
for(i = 0; i < 6; i++)
printf("%d ",a[i]);
}