C语言学习例题

1.求100到200之间的所有素数

方法1:判断n是否被2~n-1整除

#include <stdlib.h>
#include<math.h>
 int main()
{
   //求100到200之间的所有素数
   int n,i,m=0;
	for(n=101;n<=200;n=n+2)		//对每个奇数n进行判定
	{
     for(i=2;i<=n-1;i++)
      if(n%i==0)break;     //n被i整除,终止

    if(i>n-1)              //除数i大于n-1,为素数
    {
      printf("%d\t",n);
      m++;                //统计个数,用来换行
      if(m%5==0)
      printf ("\n");
     }
   }
   return 0;
   }

方法2:判断n是否被2~n^0.5整除,优化方法1

2.为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。例如,可以按以下规律将电文变成密码:将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D

#include <stdlib.h>
#include<math.h>
#include<stdio.h>
 int main()
{
   char c;
   printf("请输入电文:");
	c=getchar();

	while(c!='\n')//不是换行符就循环
	{
		if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))//是一个字母
		{
			if((c>='W'&&c<='Z')||(c>='w'&&c<='z'))
            c=c-22;//如果是后4个字母

			else c=c+4;
		}
		printf("%c",c);
		c=getchar();
		//再输入下一个字符给字符变量,每次只处理一个字符
	}
	printf("\n");

	return 0;

}

3.有10个地区的面积,要求对它们按由小到大的顺序排列

(冒泡排序法)

#include<stdio.h>
int main()
{
   int a[10];
   int i,j,s;
   printf("请输入10个地区面积的大小:\n");

   for(i=0;i<10;i++)
     scanf("%d",&a[i]);//数组初始化
     printf("\n");
   for(j=0;j<9;j++)//10个数排序,比较9轮
      for(i=0;i<9-j;i++)//每轮需要比较9-j次
      if(a[i]>a[i+1])//相邻两个数比较,交换
        {
         int s;
         s=a[i];
         a[i]=a[i+1];
         a[i+1]=s;
        }
        
   printf("面积排序如下:\n");
   for(i=0;i<10;i++)
      printf("%d\t",a[i]);//输出排序好的结果
      return 0;
}

4.将一个二维数组行和列的元素互换,存到另一个二维数组中。

#include<stdio.h>
int main()
{
   int a[2][3]={{1,2,3},{4,5,6}};
   int b[3][2],i,j;
   printf("a数组为:\n");
   for(i=0;i<2;i++)
   {
      for(j=0;j<3;j++)
      {
         printf("%5d",a[i][j]);//输出a数组
         b[j][i]=a[i][j];//将a数组的值付给b数组

      }
      printf("\n");//每打印一行就换行

   }
   //输出b数组中的元素
   printf("b数组为:\n");
   for(i=0;i<3;i++)
   {
      for(j=0;j<2;j++)
      {
         printf("%5d",b[i][j]);
      }

    printf("\n");//每打印一行就换行
   }

   return 0;
}


5.有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。

(打擂台算法)

#include<stdio.h>
int main()
{
   int i,j,max;
   int row=0,colum=0;
   int a[3][4]={{1,2,3,4},{5,6,7,8},{9,1,12,13}};
   //声明并初始化数组
   max=a[0][0];
   for(i=0;i<3;i++)
      for(j=0;j<4;j++)
        if(a[i][j]>max)//如果比max大,替换max
        {
           max=a[i][j];
           row=i;
           colum=j;
        }

   printf("最大值为:%d\n行号为:%d\n列号为:%d\n",max,row,colum);

   return 0;
}

6.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

#include<stdio.h>
#include<string.h>
int main()
{
  char string[1000];
  int i,num=0,word=0;
  //i用于遍历字符串中的每个字符
  char c;
  gets(string);

  //输入一个字符串给字符数组string
  for(i=0;(c=string[i])!='\0';i++)
   //只要不是'\0'就循环
   if(c==' ')word=0;
  //如果是空格,word置为0
   else if(word==0)
  {
     word=1;
     num++;//增加一个单词
  }
  printf("这句话中有%d个单词\n",num);
   return 0;
}

 7.有3个字符串,要求找出其中“最大”者。

(字符串比较的规则是:两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同     的字符或遇到′\0′为止

 (1) 如全部字符相同,则认为两个字符串相等;

 (2) 若出现不相同的字符,则以第1对不相同的字符的比较结果为准。)

#include<stdio.h>
#include<string.h>
int main()
{
  char str[3][20];
  char string[20];
  int i;
  for( i=0;i<3;i++)
   gets(str[i]);
  //读入3个字符串 给str[0],str[1],str[2]

  if(strcmp(str[0],str[1])>0)
   strcpy(string,string[0]);//如果成立,将string[0]赋给string
   else
     strcmp(string,string[1]);
   if(strcmp(str[2],string)>0)
		strcpy(string,str[2]);//把str[2]的字符串赋给字符数组string

   printf("\n最'大'的字符串为:%s\n",string);
   return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值