C语言练习(1)

来源:互联网 发布:达内java培训学费 编辑:程序博客网 时间:2024/05/17 08:29

1.编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母

代替该字母,若为其它字符时不变。
int _tmain(int argc, _TCHAR* argv[])
{
 printf("Please input your words:/n");
 char str[100];
 char c;
 gets(str);
 for(int i=0;i<100;i++)
 {
  c=str[i];
  if(c>='a'&&c<='z')
   putchar((c-'a'+3)%26+'a');
  else if(c>='A'&&c<='Z')
   putchar((c-'A'+3)%26+'A');
 }

 return 0;
}
2.编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。
int _tmain(int argc, _TCHAR* argv[])
{
 int n,m;
 int i=0;
 int temp[100];
 printf("Please input your number:/n");
 scanf("%d",&n);
 printf("Please input your base number:/n");
 scanf("%d",&m);
 while(n!=0)
 {
  temp[i]=n%m;
  n=n/m;
  i++;
 }
 while(i--!=0)
  printf("%d",temp[i]);
 return 0;
}
3.从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元

、50元、10元、5元、2元、1元、1角、5分、1分各多少张。
 int type[9]={10000,5000,1000,500,200,100,10,5,1};
 printf("Please input your money:/n");
 float n;
 scanf("%f",&n);
 int i=0;
 float m=n*100;
 int number=(int)m;
 printf("%d",number);
 while(number!=0)
 {
  printf("%d ",number);
  printf("the count of %f is %d/n",((float)type[i])/100,number/type[i]);
  number%=type[i++];
  
 }
 return 0;
出现的问题是:当我把float m=n*100;int number=(int)m;换成int number=(int)(n*100)的时候,为什么21.4它总

是变成2139,而不是2140呢?也就是它把21.4改变成21.39差0.01呢?
4、随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。
#include<time.h>
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 int a[20];
 int i,min=0,max=0,sum=0;
 srand((int)time(0));
 for(i=0;i<20;i++)
 {
  a[i]=rand()%41+10;
  sum+=a[i];
  if(min>a[i])min=a[i];
  if(max<a[i])max=a[i];
 }
 printf("min=%d max=%d sum=%d ave=%f ",min,max,sum,float(sum)/20);

 return 0;
}
5.编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 char str[100],save[100];
 int start=0,max=0,heigh=0;
 int i=0;
 printf("Please input your numbers:/n");
 gets(str);
 while(str[i]!='/0')
 {
  if(str[i]==' ')
  {
   if(max<heigh)
   {
    max=heigh;
    start=i-heigh;
   }
   heigh=0;
  }
  else
   heigh++;
  i++;
 }
 if(max<=heigh)
  max=heigh; //容易忘掉,切忌
 printf("max=%d ",max);
 while(max-->0)
 {
  printf("%c",str[start++]);
 }
 return 0;
}
6.任何一个自然数m的立方均可写成m个连续奇数之和。例如:
 1^3=1
 2^3=3+5
 3^3=7+9+11
 4^3=13+15+17+19
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 int n,j;
 int sum=0,start=0;
 scanf("%d",&n);
 for(j=0;j<n;j++)
  sum+=j;
 start=sum*2+1;
 for(j=0;j<n;j++)
  printf("%d ",start+j*2);
 return 0;
}
7.知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 int a,b,c;
 for(a=4;a<9;a++)
 {
  c=13-a;
  if((c+1*10+a*100+a+1*10+c*100)==1333)
   printf("a=%d,b=1,c=%d/n",a,c);
 }
 return 0;
}
8.编制一个完成两个数的四则运算程序。如:用户输入34+56则输出结果90.00。要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。
#include<stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
 float a,b;
 char mark;
 scanf("%f%c%f",&a,&mark,&b);
 switch(mark)
 {
 case '+':printf("%.2f",a+b);break;
 case '-':printf("%.2f",a-b);break;
 case '*':printf("%.2f",a*b);break;
 case '/':printf("%.2f",a/b);break;
 }
 return 0;
}
9.耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。
int _tmain(int argc, _TCHAR* argv[])
{
 int people[14]={0};
 int i,j,now=1;
 for(i=1;i<13;i++)
 {
  j=1;
  while(j!=3){
   if(people[now]==0)
    j++;
   if(now>13)
    now=1;
   else
    now++;
  }
  people[now]=1;
  printf("%d ",now);
  j=0;
 }
 return 0;
}
printf("a=%d/n", a); /*结果输出十进制整数a=1234*/

printf("a=%6d/n", a); /*结果输出6位十进制数a= 1234*/

printf("a=%06d/n", a); /*结果输出6位十进制数a=001234*/

printf("a=%2d/n", a); /*a超过2位, 按实际值输出a=1234*/

printf("*i=%4d/n", *i); /*输出4位十进制整数*i= 12*/

printf("*i=%-4d/n", *i); /*输出左对齐4位十进制整数*i=12*/

printf("i=%p/n", i); /*输出地址i=06E4*/

printf("f=%f/n", f); /*输出浮点数f=3.141593*/

printf("f=6.4f/n", f); /*输出6位其中小数点后4位的浮点数

f=3.1416*/

printf("x=%lf/n", x); /*输出长浮点数x=0.123457*/

printf("x=%18.16lf/n", x);/*输出18位其中小数点后16位的长浮点数x=0.1234567898765432*/

printf("c=%c/n", c); /*输出字符c=A*/

printf("c=%x/n", c); /*输出字符的ASCII码值c=41*/

printf("s[]=%s/n", s); /*输出数组字符串s[]=Hello, Comrade*/

printf("s[]=%6.9s/n", s);/*输出最多9个字符的字符串s[]=Hello, Co*/

printf("s=%p/n", s); /*输出数组字符串首字符地址s=FFBE*/

printf("*p=%s/n", p); /* 输出指针字符串p=How do you do*/

printf("p=%p/n", p); /*输出指针的值p=0194*/

 

 

 


程序在VS2005全部运行成功,所有的程序并没有加#include "stdafx.h"头文件,编程过少故此练习。关于数组方面

并没有写出溢出处理,因为省事。
希望看题的人至少提出几条意见,最好是能简化程序,比我的程序简单请您一定写出,我的代码质量并不高,所以一定提出点意见。瞧不起的小程序,原来编起来却一裤衩毛病。。。