Big Integer 失败啊......

记住这东西......

http://forum.ubuntu.org.cn/viewtopic.php?t=141934&highlight=

 

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <stdlib.h>
  5.  
  6. #define MAX 9000
  7.  
  8. char result[MAX];
  9. int i = 0;
  10.  
  11. enum {PASS, MINUS};
  12.  
  13. int sum(char *,char *,int);
  14. int ro(char *);
  15. void free_result();
  16. char *clear_zero(char *e);
  17.  

exercise.7-2.<The C Programming Language>.Page 136

呃......这个的也和那个答案不一样。测试了一下答案,对输入没作什么处理啊,输出没改变......不知道是不是我哪搞错了。我比答案少一个功能,检测是否是图形字符。简述完毕!

  1. /* 编写一个程序,以合理的方式打印任何输入。该程序至少能够根据用户的习惯
  2. * 以八进制或十六进制打印非图形字符,并截断长文本行。
  3. * Usage: cat filename.txt | ./print_type -t 8/16;
  4. * exercise.7-2.<The C Programming Language>.Page 136.
  5. * */
  6.  

exercise.7-3.<The C programming Language>.Page136

 编的时候变量名字随便弄,感觉好乱。后来重新整理了下,可能不太规范(包括英文的命名),这过程花时间阿......。

下次要想好再弄了......。还有,本练习和我找到的答案差好远,答案实现各种格式的输出。我却去实现最小字段啊,精度阿,向左对齐的功能......难道是我把"更多功能"理解错了??

 

  1. /*改写minprintf函数, 使它能完成printf函数的更多功能
  2. *(没走 “printf("%.*s",max, s)” 这种途径,所以在打印
  3. * double型的时候精度只正能到小数点后13位)
  4. *exercise.7-3.<The C programming Language>.Page136
  5. *test_Usage: ./program_name
  6. * finish time : 08/08/02;
  7. * */

exercise.6-4 in <The C programming Language> ,page125

这个.......

  1. /* 编写一个程序,根据单词的出现频率安降序打印输入的各个不同单词,并
  2. * 在每个单词的前面标上它的出现次数。
  3. * exercise.6-4 in <The C programming Language> ,page125*/
  4. #include <stdio.h>
  5. #include <ctype.h>
  6. #include <string.h>
  7.  
  8. #define MAXWORD 100
  9.  
  10. struct tnode {    /*  树的节点      */
  11.     char *word;  /*  指向单词的指针  */
  12.     int count;    /*  单词出现的次数  */
  13.     struct tnode *left; /*  左子节点     */
  14.     struct tnode *right;/*  右子节点            */
  15.     struct snode *snode;/*  指向该单词在sort树中的节点       */
  16. };
  17.  
  18. struct snode {        /*    sort树的节点    */
  19.     struct tnode *tnode;    /*  指向该节点所放置的单词,在单词树中的节点        */
  20.     struct snode *left;     /*   左子节点    */
  21.     struct snode *right;    /*  右子节点    */
  22. };
  23.  

续“上学期同学给的C语言练习”

  1. void two(int i){
  2.     int s[2]={0};
  3.     for(q=0;q<i;++q){
  4.         for(l=0;l<2;++l)
  5.             scanf("%s",&vote[l]);
  6.         //printf("%c %c %c",vote[0],vote[1],vote[2]);
  7.  

上学期同学给的C语言练习

上学期同学从其它学校拿来的题.当时只学了一点点.(惭愧啊,一个学期学了很少的东西,还是那么懒.....)

题目要求在这大概简述一下,题目丢了.

多人对三个候选人,分别为 a, b, c ,进行投票.排第一个拿5分,第二个拿3分,第三个2分.

若重复,出现未知候选人,要在输入投票内容后提示错误,但不影响投票结果,结果中不包含错误票提交的分数.

分数相同者要重新投票,若是有两人相同票数,要提示要求哪两人重投.

这是我的

 

 

  1. #include <stdio.h>
  2. char *b[2];
  3. int i,k,l,q,w,x,j;      //LINUX下每个FOR循环要用不同变量,好象还和循序有关......你在WINDOWS下试下减少变量......
  4. int swap;       //记录统计结果较大的数组下标
  5. char vote[3];   //记录投票内容,如:a,b,c
  6. void two(int i);        //两人投票
  7. int mark=0;
  8.  
  9. main()
  10. {
  11.     int m;
  12.     char a[]={'a','b','c'};     //用于实现统计功能
  13.     int s[3]={0};                     //分别固定记录a,b,c的得分,如:s[0]固定记录a[0](即'a')的得分
  14.     //printf("%c %c %c",a[0],a[1],a[2]);
  15.     printf("\nman:");
  16.     scanf("%d",&i);
  17.     printf("case a vote:\n");
  18.  

续nqsort

  1. /*  writelines函数: 写输出行*/
  2. void writelines(char *lineptr[],int nlines)
  3. {
  4.     int i;
  5.  
  6.     for(i = 0; i < nlines;++i)
  7.         printf("%s\n",lineptr[i]);
  8. }
  9.  
  10. /*  swap函数:交换v[i]和v[j]*/
  11. void swap(void *v[],int i, int j)
  12. {
  13.     void *temp;
  14.  
  15.     temp = v[i];
  16.     v[i] = v[j];
  17.     v[j] = temp;
  18. }
  19.  

YEASH!!!

刚发现有这样适合 programmer的BLOG!

就把我今天刚作的C语言的小练习方上来看看先~~

初学编程,练习是 The C programming language 里的

练习5-14

请指教...
 

  1. /*对输入文本进行排序,
  2. *nqsort -n -r
  3. *其中参数 -n 是按数值排序, -r是逆序
  4. * *exercise.5-13.in 《The C Programming Language》,page102 */
  5.  
  6. #include <stdio.h>
  7. #include <string.h>
  8. #include <stdlib.h>
  9.  
  10. #define MAXLINES 5000
  11. char *lineptr[MAXLINES];
  12.  
  13. int readlines(char *lineptr[],int nlines);
  14. void writelines(char *lineptr[], int nlines);
  15. void swap(void *v[],int i, int j);
  16.  
  17. void nqsort(void *lineptr[],int left, int right,int argument,
  18.                 int (*comp)(void *, void *));
  19. int numcmp(char *, char *);
  20.  
  21. int main(int argc, char **argv)
  22. {
  23.     int c;
  24.     int nlines = 0;
  25.     int numeric = 0,reverse = 0;
  26.  
  27.     while(--argc > 0 && *(++argv)[0] == '-')
  28.        while((c = *++argv[0]))
  29.         switch(c){
  30.             case 'n':
  31.                 numeric = 1;
  32.                 break;
  33.             case 'r':
  34.                 reverse = 1;
  35.                 break;
  36.             default:
  37.                 printf("nnqsort: illegal option %c \n",c);
  38.                 argc = 0;
  39.                 break;
  40.        }
  41.     printf("n:%d\n r:%d\n",numeric,reverse);
  42.     if(argc != 0)
  43.         printf("Usage: nqort -n -r \n");
  44.     else{
  45.         if((nlines = readlines(lineptr,MAXLINES)) >= 0) {
  46.             nqsort((void **)lineptr,0,nlines-1,reverse,
  47.                     (int (*)(void *, void *))(numeric ? numcmp : strcmp));
  48.             writelines(lineptr, nlines);
  49.             return 0;
  50.         }else {
  51.             printf("input too big to sort\n");
  52.             return 1;
  53.         }
  54.     }   
  55.     return 0;
  56. }
  57.