【例7-1】调查电视节目受欢迎程度。
/* 投票情况统计 */
#include
int main(void)
{
int count[9];
int i,response;
for(i=1;i<=8;i++)
count[i]=0;
for(i=1;i<=1000;i++){
printf("input your response:");
scanf("%d",&response);
if(response<1||response>8)
printf("this is a bad response:%d\d",response);
else
count[response]++;
}
printf("result:\n");
for(i=1;i<=8;i++)
printf("%4d%4d\n",i,count[i]);
return 0;
}
【例7-2】利用数组计算裴波那契数列的前10个数,即1,1,2,3,5,...,55,并按每行打印5个数的格式输出。
/* 输入裴波那契数列 */
#include
int main(void)
{
int i;
int fib[10]={1,1};
for(i=2;i<10;i++)
fib[i]=fib[i-1]+fib[i-2];
for(i=0;i<10;i++){
printf("%6d",fib[i]);
if((i+1)%5==0)
printf("\n");
}
return 0;
}
【例7-3】顺序查找法。
/* 在数组中查找一个给定的数 */
#include
int main(void)
{
int i,flag,x;
int a[5];
printf("Enter 5 integers:");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("Enter x:");
scanf("%d",&x);
flag=0;
for(i=0;i<5;i++)
if(a[i]==x){
printf("Index is %d\n",i);
flag=1;
break;
}
if(flag==0)
printf("Not Found\n");
return 0;
}
【例7-4】输入一个正整数n(1
/* 找出数组的最小值和它所对应的下标 */
#include
int main(void)
{
int i,index,n;
int a[10];
printf("Enter n:");
scanf("%d",&n);
printf("Enter %d integers:",n);
for(i=0;i<0;i++)
scanf("%d",&a[i]);
index=0;
for(i=1;i)
if(a[i]<a[index])
index=i;
printf("min is %d\n",a[index],index);
return 0;
}
【例7-5】选择排序法。
/* 选择法排序 */
#include
int main(void)
{
int i,index,k,n,temp;
int a[10];
printf("Enter n:");
scanf("%d",&n);
printf("Enter%d integers:",n);
for(i=0;i)
scanf("%d",&a[i]);
for(k=0;k1;k++)
index=k;
for(i=k+1;i){
index=k;
if(a[i]i;
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("After sorted:");
for(i=0;i)
printf("%d",a[i]);
printf("\n");
return 0;
}
【例7-6】二分查找法。
/* 二分查找法 */
#include
int main(void)
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int low,high,mid,n=10,x;
printf("Enter x:");
scanf("%d",&x);
low=0;high=n-1;
while(low<=high) {
mid=(low+high)/2;
if(x==a[mid])
break;
else if(x<a[mid])
high=mid-1;
else
low=mid+1;
}
if(low<=high)
printf("Index is%d\n",mid);
else
printf("Not Found\n");
return 0;
}
【例7-7】将1个3*2的矩阵存入1个3*2的二维数组中,找出最大值以及他的行下标和列下标,并输出该矩阵。
/* 找出矩阵中的最大值的行下标和列下标 */
#include
int main(void)
{
int col,i,j,row;
int a[3][2];
printf("Enter 6 integers:\n");
for(i=0;i<3;i++){
for(j=0;j<2;j++)
printf("%4d",a[i][j]);
printf("\n");
}
row=col=0;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
if(a[i][j]>a[row][col]){
row=i;
col=j;
}
printf("max=a[%d][%d]=%d\n",row,col,a[row][col]);
return 0;
}
【例7-8】定义一个3*2的二维数组a数组元素的值由式给出,按矩阵的形式输出a。
/*按数组的形式输出二维数组*/
#include
int main(void)
{
int i,j;
int a[3][2];
for(i=0;i<3;i++)
for(j=0;j<2;j++)
a[i][j]=i+j;
for(i=0;i<3;i++){
for(j=0;j<2;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}
【例7-9】输入一个整数n(1
/* 方阵转置 */
#include
int main(void)
{
int i,j,n,temp;
int a[6][6];
printf("Enter n;");
scanf("%d",&n);
for(i=0;i)
for(j=0;j)
a[i][j]=i*n+j+1;
for(i=0;i)
for(j=0;j)
if(i<=j){
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
for(i=0;i){
for(j=0;j)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}
【例7-10】定义函数.....
【例7-11】回文.....
/* 判断字符串是否是回文 */
#include
int main(void)
{
int i,n,m;
char s[10];
printf("Enter a string:");
i=0;
while((s[i]=getchar())!='\n')
i++;
s[i]='\0';
for(n=0,m=i-1;n)
if(s[n]!=s[m])
break;
if(n>=m)
printf("It is a plalindrome\n");
else
printf("It is not a plalindrome\n");
return 0;
}
、
【例7-12】
#include
int main(void)
{
int i,number;
char str[10];
printf("Enter a string:");
i=0;
while((str[i]=getchar())!='\n')
i++;
str[i]='\0';
number=0;
for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&& str[i]<='9')
number=number*10+str[i]-'0';
printf("digit=%d\n",number);
return 0;
}
【例7-13】
/* 统计字符串中数字字符的个数 */
#include
int main(void)
{
int count,i;
char str[80];
printf("Enter a string:");
i=0;
while((str[i]=getchar())!='n')
i++;
str[i]='\0';
count=0;
for(i=0;str[i]!='\0';i++)
if(str[i]<='9' && str[i]>='0')
count++;
printf("count=%d\n",count);
return 0;
}
【例7-14】进制转换。
/* 进制转换 */
#include
int main(void)
{
int i,k;
char str1[80],str2[80];
long number;
printf("Enter a string:");
i=0;
while((str1[i]=getchar())!='\n')
i++;
str1[i]='\0';
k=0;
for(i=0;str1[i]!='\0';i++)
if
(str1[i]>='0'&&str1[i]<='9'||str1[i]>='a'&&str1[i]<='f'||str1[i]>='A'&&str1[i]<='F')
{
str2[k]=str1[i];
k++;
}
str2[k]='\0';
number=0;
for(i=0;str2[i]!='\0';i++)
if(str2[i]>='0'&&str2[i]<='9')
number=number*16+str2[i]-'0';
else if(str2[i]>='a'&&str2[i]<='f')
number=number*16+str2[i]-'a'+10;
else if(str2[i]>='A'&&str2[i]<='F')
number=number*16+str2[i]-'A'+10;
printf("New string:");
for(i=0;str2[i]!='\0';i++)
putchar(str2[i]);
printf("\n");
printf("number=%ld\n",number);
return 0;
心得:C语言编程是一项需要耐心和细心的工作,要要学好必须充分了解C语言编程的要素,而敲那么多的代码和程序以来,感觉还没有完全理解,还需要再接再厉!