您的位置:首页 > 编程语言

编程调试记录之一

2010-04-22 23:50 232 查看
C语言中对字符串的操作一共4种:

#include <stdio.h>

int main( )

{

    char str[80];

 

    gets(str);

    puts(str);

    puts("Hello");

 

    return 0;

int main( )

{

    char str[80];

 

    scanf("%s", str);

    printf("%s", str);

    printf("%s", "Hello");

 

    return 0;

}

    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;

}   

 

/* Note:Your choice is C IDE */

#include "stdio.h"

void main()

{

    int x,y;

    x==2;[高攀1] 

    y=5;

    printf("%d/n",x+y);

}

1245073

Press any key to continue

#include "stdio.h"

#include "time.h"

int main()

{

    time_t biggest=0x7FFFFFFF;

    printf("biggest=%s/n",ctime(&biggest));

    return 0;

}

biggest=Tue Jan 19 11:14:07 2038

Press any key to continue

 

 

#include"stdio.h"

int main()

{

    int a,b;

    scanf("%d,%d",&a,&b);

    printf("%d %d",a,b);

}

运行结果:

4,5

4 5Press any key to continue

运行结果:

4 5

4 -858993460Press any key to continue

#include"stdio.h"

int main()

{

    int a b;

    scanf("%d,%d",&a,&b);

    printf("%d %d",a,b);

}

运行结果:

4 5

4 5Press any key to continue

运行结果:

4,5

4 -858993460Press any key to continue

 

/*计算y=a*x*x+b*x+c的值*/
#include"stdio.h"
main()
{
     double a,b,c,x,y;
        scanf("%lf%lf%lf%lf",&a,&b,&c,&x);
        y=a*x*x+b*x+c;
        printf("%lf/n",y);
}
 

/*【例6-8】输入一行字符,将其中的大写字母转换为相应的小写字母后输出,小写字母转换为相应的大写字母后输出,其他字符按原样输出。*/

 

 

/* 大小写英文字母转换 */

#include <stdio.h>

int main(void)

{

   char ch;                        /* 定义1个字符变量ch */

 

   printf("input characters: ");       /* 输入提示 */

   ch = getchar();                 /* 第8行,输入一个字符,赋给变量 ch */

   /* 比较ch和 '/n',当输入的字符不是回车时,继续循环;遇回车,则循环结束 */

   while(ch != '/n'){

      if ( ch >= 'A' && ch <= 'Z' )       /* 如果ch是大写字母 */

          //ch = ch - 'A' + 'a';          /* 大写字母转换为小写字母 */

      ch = ch+32;

      else if ( ch >= 'a' && ch <= 'z')   /* 如果ch是小写字母 */

          ch = ch -32;          /* 小写字母转换为大写字母 */

      putchar(ch);                     /* 输出转换后的字符 */

      ch = getchar();              /* 第16行,读入下一个字符 */

   }                                   /* 第17行 */

   return 0;

}

 

#include"stdio.h"

int main()

{

    int array[6],i;

    for(i=0;i<6;i++)

    printf("%x /n",&array[i]);

}

#include"stdio.h"

int main()

{

    int array[6],i;

    for(i=0;i<6;i++)

    {

       array[i]=i;

       printf("%x%x %x/n",&array[i],&(&i)[0],&array[i]);

    }

}

运行结果:

12ff68 12ff64 12ff68

12ff6c 12ff64 12ff6c

12ff70 12ff64 12ff70

12ff74 12ff64 12ff74

12ff78 12ff64 12ff78

12ff7c 12ff64 12ff7c

Press any key to continue

 

结论:

&(&i)[0]和i等价

   
#include<stdio.h>

int main(void)

{

    int i,m,n,j,p,q,sum;

    printf("Enter m:");

    scanf("%d",&m);

    printf("Enter n:");

    scanf("%d",&n);

    p=1;q=1;

    for(i=1,j=1;i<=n,j<=m;i++,j++)[微软用户2] 

    {

      p=p*i;

      q=q*j;

    }

    sum=p+q;

    printf("sum=%d/n",sum);

    return 0;

}

结论:不要将两个循环合并为一个循环——当其中的一个判断条件不满足时,循环终止,结果将比预期的小;但当m、n相等时能得出语气结果。
 

/*实验题目1:实现顺序表各种基本运算的算法。

编写一个程序,实现顺序表的各种基本运算,并在此基础上设计一个主程序完成如下功能:

(1)初如化顺序表L。

(2)依次采用尾插法插入A,B,C,D,E元素。

(3)输出顺序表L。

(4)输出顺序表L的长度。

(5)判断顺序表L是否为空。

(6)输出顺序表L的第3个元素。

(7)输出元素A的位置。

(8)在第4个元素位置上插入F元素。

(9)输出顺序表L。

(10)删除L的第3个元素。

*/

#include"stdio.h"

int main()

{

    int biao[100]={1,2,3,4,5,6,7};  //用数组作为表的结构,并初始化顺序表

    int i,j,f,array[5];  //用来保存将要插入的5个元素

    int n=7;  //顺序表长度

    printf("请输入5个元素的值/n");

    for(i=0;i<5;i++)

       scanf("%d",&array[i]);

 

    for(j=0;j<5;j++)  //依次采用尾插法插入A,B,C,D,E元素

    {

       n++;  //顺序表长度加1

       for(i=n-1;i>=0;i--)

           biao[i+1]=biao[i];

       biao[0]=array[j];

      

    }

      

    for(i=0;i<n;i++)    //输出顺序表L

       printf("%d ",biao[i]);

    puts(" ");

 

    printf("%d/n",n);//输出顺序表L长度

   

    if(n==0)

       printf("顺序表是空的!/n");

    else

       printf("顺序表不是空的!/n");

 

    printf("第3个元素:%d/n",biao[2]);  //输出顺序表L的第3个元素,即下标为2的元素

 

    for(i=0;i<n;i++)  //输出元素A,即array[0]的位置

       if(biao[i]==array[0])

           printf("%d/n",i);

 

    for(i=3;i<n;i++)

       biao[i+1]=biao[i];  //从第四个位置,元素后移,空出第四个元素的位置

    printf("请输入F:/n");

    scanf("%d",&f);

    biao[3]=f;  //在第4个元素位置上插入F元素

 

    for(i=0;i<n;i++)

       printf("%d ",biao[i]);  //输出顺序表L

    puts(" ");

 

    for(i=2;i<n;i++)

       biao[i]=biao[i+1];  //从第三个位置,元素前移,即删除L的第3个元素

    return 0;

}

#include"stdio.h"

main()

{

    int n,i,m,cnt=1;

    scanf("%d",&n);

    printf("   2");

    for(m=3;m<n;m++)

    {

        for(i=2;i<=[微软用户3] m/2;i++)//加了一个等号

           if(m%i==0)

              break;

             

       if(i>m/2)

       {

           cnt++;

           printf("%4d ",m);

       }

       if(cnt%5==0)

           printf("/n");       

    }  

}

运行结果:

125

   2   3    5    7   11

 

  13   17   19   23   29

 

  31   37   41   43   47

 

 

 

 

 

  53   59   61   67   71

 

  73   79   83   89   97

 

 

 

 101  103  107  109  113

 

Press any key to continue

/*2099 整除的尾数 暴力算法*/

#include"stdio.h"

int main()

{

    int a,b,i,count;

    while(scanf("%d%d",&a,&b)!=EOF&&a||b)

    {

      

       for(count=0,i=a*100;i<=a*100+99;i++)

           if(i%b==0)

                  printf(count++==0? "%02d[微软用户4] ":" %02d",i%100);

          

       puts(" ");

    }  

}

 [高攀1]编译器忽视了此bug

 [微软用户2]不要将两个循环合并为一个循环——当其中的一个判断条件不满足时,循环终止,结果将比预期的小;但当m、n相等时能得出语气结果。

 [微软用户3]此等号非同小可!!!没有等号会怎么样???

 [微软用户4]表示以两个宽度输出,不足的在前面补0凑齐
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息