| 
 | 
 
 
发表于 2015-8-22 21:36:38
|
显示全部楼层
 
 
 
1:%6d可以理解为这个数字在不超过 6 位时,输出它要占 6位,默认以 空格符 填满。且为右对齐(+)。我们还可以改变默认的填充字符,比如 %06d, 表示不足 6位 时以 0 填充。这只在 右对齐的情况下有用。如果是 %-6d 则只能默认 以空格符占 6位。不能够改变默认填充字符。(因为会使得输出字符值发生视觉改变) 
- #include <stdio.h>
 
  
- int main(){
 
 -     int a = 123;
 
 -     printf("%06d", a);
 
 -     printf("%c", 'a');
 
 -     return 0;
 
 - }
 
 
  复制代码 
2:scanf("%s", buf); // 该函数从接收第一个不为 空格或者Enter 的值开始,到空格或者Enter结束,对应printf("%s", buf) 
gets(buf); //该函数从一开始接收任一字符,到Enter键结束,中间可接收 空格。对应 puts(buf);但本身很不安全(不进行边界检查)。 
fgets()可以解决上面两个函数的问题,fget(tempstr,10,stdin)tempstr是用来接收字符串的变量,10是变量长度(可以自己定义),stdin是标准输入(键盘输入)。此函数完美解决以上问题,但此函数会有一点小问题,fget()函数接收的字符串是以/n结尾的,这与平时用的/0结尾的字符串有点不同,会有兼容性问题。 
- //scanf("%s",buf); 版,对应其他版本可用相应的函数 gets(buf);,fgets(buf,1000,stdin);做相应的改动即可。
 
 - #include <stdio.h>
 
 - #include <stdlib.h>
 
 - #include <string.h>
 
  
- void encryption(char buf[], int len){
 
 -     int i;
 
 -     for ( i = 0; i < len; i++ ){
 
 -         if( buf[i] >= 'A' && buf[i] <= 'Z' ){
 
 -             buf[i] = (buf[i] - 65 + 4) % 26 + 65; //加减去 65 是为了 将 'A' 与 零等同。
 
 -         }
 
 -         else if( buf[i] >= 'a' && buf[i] <= 'z'){
 
 -             buf[i] = (buf[i] - 97 + 4) % 26 + 97; //'a' <==> 0
 
 -         }
 
 -     }
 
 -     printf( "对应的密文是:%s\n",buf );
 
 - }
 
  
- void deciphering( char buf[], int len ){
 
 -     int i;
 
 -     for ( i = 0; i < len; i++ ){
 
 -         if( buf[i] >= 'A' && buf[i] <= 'Z' ){
 
 -             buf[i] = (buf[i] - 65 - 4 + 26) % 26 + 65; //再加 26 是为了 'A'->'W' 的情况。
 
 -         }
 
 -         else if( buf[i] >= 'a' && buf[i] <= 'z' ){
 
 -             buf[i] = (buf[i] - 97 - 4 + 26) % 26 + 97; //同上。
 
 -         }
 
 -     }
 
 -     printf("对应的原文是:%s\n",buf);
 
 - }
 
  
- int main( ){
 
 -     char buf[1000];
 
 -     char choice[10];
 
 -     int len = 0;
 
  
-     printf("\t1,请输入原文译成密码\n");
 
 -     printf("\t2,请输入密码译成原文\n");
 
 -     printf("请输入您的选择:");
 
 -     while( 1 ){
 
 -         scanf("%s", choice);
 
 -         if( strlen(choice) == 1 && (choice[0] == '1' || choice[0] == '2') ) break;
 
 -         printf("您的输入有误,请重新输入:");
 
 -     }
 
  
-     if (choice[0] == '1'){
 
 -         printf("请输入原文:");
 
 -         scanf("%s", buf);
 
 -         len = strlen(buf);
 
 -         encryption(buf, len); //该函数中只对英文字符处理,其他字符不做处理。
 
 -     }
 
 -     else {
 
 -         printf("请输入密文:");
 
 -         scanf("%s", buf);
 
 -         len = strlen(buf);
 
 -         deciphering(buf, len); //同上。
 
 -     }
 
  
-     return 0;
 
 - }
 
 
  复制代码 |   
 
 
 
 |