1129c练习题

写一个函数,将字符串转换成带符号整型数据,注意判断字符串长度

#include <stdio.h>

int Nullflag = 0;
int nonflag = 0;

int StrToInt(char *str)
{
    int num = 0;
    char *temp = str;
    if (str == NULL)
    {
        Nullflag = 1;
        return 0;
    }
    while (*temp < '0'|| *temp > '9')
    {
        nonflag = 1;
        temp++;
        return 0;
    }
    while(*str != '\0')
    {
        num = num*10 + *str - '0';
        *str ++;
    }
    return num;
}
int main()
{
    int flag = 1;
    int num;
    char a[100];
    char *str;
    printf("plz input za num:\n")
    gets(a);
    str = a;
    num = StrToInt(str);
    if (a[0] == '-')
    {
        num = num * (-1);
    }
    printf("num = %d\n",num)
    return 0;
}

阵的主对角线之上称为“上三角”。请你设计一个用于填充n阶方阵的上三角区域的程序。填充规则是:使用1,2,3…的自然数列,从左上角开始,按照顺时针方向螺旋填充。

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n;
    int a[100][100]={0};
    int i = 0,j = 0,k = 1;
    scanf("%d",&n);
    a[i][j]=1;
    while (k < n*(n+1)/2)
    {
        
        while(j + 1 < n && !a[i][j+1])
        {
            a[i][++j] = ++k;
        }
 
        
        while(i + 1 < n && j - 1 >= 0 && !a[i+1][j-1])
        {
            a[++i][--j] = ++k;
        }
 
        
        while(i - 1 >= 0 && !a[i-1][j])
        {
            a[--i][j] = ++k;
        }
 
    }
    
    for(i = 0 ; i < n ; i++)
    {
        for(j = 0;j < n-i ; j++)
        {
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

输入年份、和这一年的第N天,最后算出这一天是这一年的几月几日。(区分闰年)

#include <stdio.h>

 int main()
{
    int year;
    int day;
    int d; 
    int m;
    int leap;
    int i;
    int Month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    printf("plz input the year and the days:\n");
    scanf("%d",&year);
    scanf("%d",&day);
    if( (year%4 != 0) ||( (year%100 == 0)&& (year%400 != 0)))
    {
        leap = 0;
    }
    else
    {
        leap = 1;
    }
    if(leap == 1)
    {
        Month[1] = 29;
    }
    m = 1 ;
    for(i = 0 ; i < 12 ; i++)
    {
        d = day-Month[i];
        if(d > 0)
        {
            day = d;
            m++;
        }
        else
        {
            d = d+Month[i];
            break;
        }
    }
    printf("The date is:%dy%dm%dd",year,m,d);
    return 0;
}

取十个1-100的随机整数,然后倒序打印出来。(通过指针,而不是数组下标)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>

void Print(int *arr_p,int lenth)
    {
      int i = 0;
      int flag = 0; 
      for (;i < lenth ; i++)
      {
        printf ("%4d",arr_p[i]);
        ++flag;
        if (flag%10 == 0)
        {
            printf("\0");
        }
      }
    }

void Rank(int *array,int lenth)
    {
      int i,j;
      int temp;
      for (i = 0;i < lenth - 1;i++)
      {
         for (j = 0;j < lenth - i - 1 ; j++)
         {
            if (array[j] > array[j+1])
            {
               temp = array[j];
               array[j] = array[j+1];
               array[j+1] = temp;
            }
         }
      }
    }

int main(void)
   {
    int array[10];
    int  i,lenth;
    srand (time (NULL));
    for(i = 0;i < 10; i++)
        {
          array[i] = rand ()%100;
        }
    lenth = sizeof(array)/sizeof(array[0]);
    Print(array,lenth);
    Rank(array,lenth);
    Print(array,lenth);
    system("pause");
    return 0;
   }

通过随机函数获取到26个小写英文字母,存储到数组里并小写字母顺序打印出来。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void func(char *s)
{
    srand(time(NULL));
    int n = 0;
    while(n < 26)   
    {
        int temp = rand() % 26;
        if(*(s + temp) == 0)    
        {
            *(s + temp) = temp + 'a';     
            n++;    
        }
    }
}

int main()
{
    char a[26] = { 0 };
    int i;
    func(a);
    for (i = 0; i < 26; i++)
    {
        printf("%c\n", *(a + i));
    }
    printf("\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xyc895/article/details/84644813