落絮飞雁

顺流而下,把梦做完

【ACM】ACM steps 1.1.4*

A+B for Input-Output Practice (IV)

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 25266 Accepted Submission(s): 13962

Problem Description
Your task is to Calculate the sum of some integers.

Input
Input contains multiple test cases. Each test case contains a integer N, and then N integers follow in the same line. A test case starting with 0 terminates the input and this test case is not to be processed.

Output
For each group of input integers you should output their sum in one line, and with one line of output for each line in input.

Sample Input
4 1 2 3 4
5 1 2 3 4 5
0

Sample Output
10
15

参考题解:

#include 
int main()
{
    int n,sum,i,t;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0) break;
            sum=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&t);
            sum=sum+t;
        }
        printf("%dn",sum);
    }
}

!=EOF的作用就是一直读到文件的末尾,还有就是要注意if(n==0) break;要直接放在while语句的下面。且这个语句后面要加分号。

【ACM】ACM steps 1.1.3

A+B for Input-Output Practice (III)

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 28263 Accepted Submission(s): 15357

Problem Description
Your task is to Calculate a + b.

Input
Input contains multiple test cases. Each test case contains a pair of integers a and b, one pair of integers per line. A test case containing 0 0 terminates the input and this test case is not to be processed.

Output
For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.

Sample Input
1 5
10 20
0 0

Sample Output
6
30

解:

#include
 int main()
 {
    int a,b;
    scanf("%d %d",&a,&b);
    while(!(a==0&&b==0))
    {
    printf("%dn",a+b);
     scanf("%d %d",&a,&b);
    }
 }
华丽丽的一次过,没什么好说的……貌似之前的两题在wp上发表的时候格式有点问题……已经修正这个问题了~

【ACM】 ACM steps 1.1.2

1.1.2 A+B for Input-Output Practice (II)

 

Problem Description

Your task is to Calculate a + b.

 

Input

Input contains an integer N in the first line, and then N lines follow. Each line consists of a pair of integers a and b, separated by a space, one pair of integers per line.

Output

For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.

Sample Input

2

1 5

10 20

Sample Output

6

30

Author

lcy

Recommend

JGShining

解:

#include
#define M 1000
int main()
{
int a,b,i,j,sum[M];//一维数组来解
scanf("%d",&i);
for(j=0;j

简单的一维数组的应用,注意while语句不要直接把自增循环写进去,这道题又没有一次过,原因又是低级错误,一开始我还以为HDOJ不能把注释写进去呢……

【ACM】ACM steps 1.1.1

从今天开始做steps上面的题目了。大体看了一下难度,感觉不是很难,现在都是一些A+B的题目,争取一次过掉。把源码发在这里,再写几句解题心得什么的……

1.1.1A+B for Input-Output Practice (I)

 

Problem Description

Your task is to Calculate a + b.
Too easy?! Of course! I specially designed the problem for acm beginners.
You must have found that some problems have the same titles with this one, yes, all these problems were designed for the same aim.

 

 

Input

The input will consist of a series of pairs of integers a and b, separated by a space, one pair of integers per line.

Output

For each pair of input integers a and b you should output the sum of a and b in one line, and with one line of output for each line in input.

Sample Input

1 5

10 20

Sample Output

6

30

Author

lcy
参考代码:

#include
 int main()
 {
    int a,b;
   while(scanf("%d%d",&a,&b)!=EOF)
   printf("%dn",a+b);
 }

 

最简单的题目了,没什么好说的,注意while语句后面不要加分号,一开始居然错在这上面了………………

【C语言笔记】一维数组

数组学习

1,  一个数组只能处理同一类型的数据

2,  只能逐个引用数组中的数据

3,  赋初值时元素个数可以省略

Ep:int a[ ]={1,2,3,4,5,6,7,8,9,10};

C语言会根据初值的个数来确定数组的长度

未赋初值的元素默认为0

4,  数组的下标数永远小于数组个数!个数为10的数组不会有a[10]。超出后C语言不会报错,但是会导致程序错误!——C语言不检查数组的边界

5,  Ep:输入十个数,输出最大值

#include<stdio.h>

void main()

{

         int avg[10],i,big;

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

                   scanf(“%d”,&avg[i]);

         big=avg[0];/*注意这里要先让big等于数组的任意个数 */

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

                   if(avg[i]>big)

                            big=avg[i];

         printf(“%d”,big);

         system(“pause”);

}

6,  数组输出时为了美观最好定义“最小输出宽度”,即printf(”%5d”),数要大于最大的数组值的位数

 

 

 

7,  只能在定义时给数组批量赋值,不能

Int a[5];

a[5]={1,2,3,4,5};

写法是错误的,因为此时的a[5]不再表示数组的个数

131101c语言上机上机

一,判断题

FTTTTT

二,选择题

CCDBBB

三,填空见评论

四、编程题

1.仿照例1.1,编程序在屏幕上显示:

*****************************

Merry Christmas!

Happy New Year!

*****************************  

解:#include <stdio.h>

void main()

{

printf(“*****************************n”);

printf(“Merry Christmas!n”);

printf(“Happy New Year!n”);

printf(“*****************************n”);

}

2.仿照例1.2编程,输入一个整数,计算这个数的平方。

解:#include<stdio.h>

void main()

{

int a,z;

scanf(“%d”,&a);

z=a*a;

printf(“%dn”,z);

}

排序——基本操作

实验八:排序的基本操作

输入一组关键字序列分别实现下列排序:
(1)实现简单选择排序、直接插入排序和冒泡排序。
(2)实现希尔排序算法。
(3)实现快速排序算法。
(4)实现堆排序算法。
(5)采用链式存储实现简单选择排序、直接插入排序和冒泡排序。
(6)在主函数中设计一个简单的菜单,分别测试上述算法。

综合训练:采用几组不同数据测试各个排序算法的性能(比较次数和移动次数)。


# include 
# include 

#define MAXSIZE 20
typedef int KeyType;

typedef struct
{
         KeyType key;
         //InfoType otherinfo;
}RedType;
typedef struct
{
         RedType r[MAXSIZE+1];
         int length;
}SqList;

typedef SqList HeapType;

typedef struct Node
{
         int data;
         struct Node * pNext;
}Node, *pNode;

void printMenu();
void InsertSort(SqList &);
bool LT(int ,int );
void traverse(SqList &);
void SelectSort(SqList &);
int SelectMinKey(SqList &, int);
void BubbleSort(SqList &);
void ShellSort(SqList &L, int dlta[], int t);
void ShellInsert(SqList &L, int);
void Qsort(SqList &, int ,int);
int Partition(SqList &, int ,int);
void HeapSort(HeapType &);
void HeapAdjust(HeapType &, int ,int );
void Ltraverse(pNode &);
void LSelectSort(pNode &);
pNode LSelectMinkey(pNode &);
void LBubbleSort(pNode &);

int main()
{
         int n;
         SqList L;
         pNode pHead, p, q;
         if( !(pHead=(pNode)malloc(sizeof(Node)) ))
                   exit (-1);
         pHead->pNext = NULL;
         int dlta[99] = {3, 2, 1};
         printf("请输入数组长度L.length = ");
         scanf("%d", &L.length);
         p = pHead;
         for(int i=1; idata = L.r[i].key;
                   p->pNext = q;
                   p = q;
         }
         p->pNext = NULL;


         printMenu();
         while(scanf("%d", &n)!=EOF)
         {
                   switch(n)
                   {
                   case 1:
                            SelectSort(L);
                            printf("---排序后的数组为:");
                            traverse(L);
                            break;
                   case 2:
                            InsertSort(L);
                            printf("---排序后的数组为:");
                            traverse(L);
                            break;
                   case 3:
                            BubbleSort(L);
                            printf("---排序后的数组为:");
                            traverse(L);
                            break;
                   case 4:
                            ShellSort(L, dlta, 2);
                            printf("---排序后的数组为:");
                            traverse(L);
                            break;

                   case 5:

                            Qsort(L, 1, L.length);
                            printf("---排序后的数组为:");
                            traverse(L);
                            break;
                   case 6:
                            HeapSort(L);
                            printf("---排序后的数组为:");
                            traverse(L);
                            break;
                   case 7:
                            LSelectSort(pHead);
                            Ltraverse(pHead);
                            break;

                   case 8:
                            BubbleSort(L);
                            traverse(L);
                            break;
                   case 9:
                            LBubbleSort(pHead);
                            Ltraverse(pHead);
                            break;

                   default:
                            printf("---输入有误,请重新输入!!---n");
                   }
                   printMenu();
         }


         return 0;
}

void printMenu()
{
         printf("------排序菜单如下------n");
         printf("1.简单选择排序n");
         printf("2.直接插入排序n");
         printf("3.冒泡排序n");

         printf("4.希尔排序n");
         printf("5.快速排序n");
         printf("6.堆排序n");
         printf("7.链式存储实现简单选择排序n");
         printf("8.链式存储实现简单直接插入排序n");
         printf("9.链式存储实现简单冒泡排序n");
         printf("---请选择排序方式:");
}

void InsertSort(SqList &L)
{
         int i, j;
         for( i=2; i=b )
                   return false;
         else
                   return true;
}

void traverse(SqList &L)
{
         for( int i=1; i L.r[j].key)
                            {
                                     t = L.r[i];
                                     L.r[i] = L.r[j];
                                     L.r[j] = t;
                            }
                   }
}

void ShellSort(SqList &L, int dlta[], int t)
{
         int k;
         for(k=0; k0 && LT(L.r[0].key, L.r[j].key); j-=dk)
                                     L.r[j+dk] = L.r[j];
                            L.r[j+dk] = L.r[0];
                   }
}

void Qsort(SqList &L, int low, int high)
{
         int pivotloc;
         if(low=pivotkey)
                            --high;
                   L.r[low] = L.r[high];
                   while(low0; i--)
                   HeapAdjust( H, i, H.length );
         for( i = H.length; i>1; i--)
         {
                   t = H.r[1];
                   H.r[1] = H.r[i];
                   H.r[i] = t;
                   HeapAdjust(H, 1, i-1);
         }
}

void HeapAdjust(HeapType &H, int s,int m)
{
         int j;
         RedType rc;
         rc = H.r[s];
         for( j=2*s; jpNext;
         while( NULL != p)
         {
                   printf("%d ", p->data);
                   p = p->pNext;
         }
         printf("n");
}

void LSelectSort(pNode &pHead)
{
         pNode p, q;
         int t;
         q = (pNode)malloc(sizeof(Node));
         for( p = pHead->pNext->pNext; NULL != p->pNext; p = p->pNext)
         {
                   q = LSelectMinkey( p );
                   if( p->data != q->data)
                   {
                            t = p->data;
                            p->data = q->data;
                            q->data = t;
                   }
         }
}

pNode LSelectMinkey(pNode &p)
{
         pNode q;
         q = p;
         int min;
         min = q->data;
         while( p != NULL)
         {
                   if( p->data data;
                            q = p;
                   }
                   p = p->pNext;
         }

         return q;
}

void LBubbleSort(pNode &pHead)
{
         int  t;
         pNode p,q;
         //RedType t;
         for( p=pHead->pNext;  p->pNext->pNext != NULL;  p = p->pNext)
                   for( q=p->pNext; q->pNext!=NULL; q=q->pNext)
                   {
                            if(p->data > q->data)
                            {
                                     t = p->data;
                                     p->data = q->data;
                                     q->data = t;
                            }
                   }
}