写一个函数,将字符串转换成带符号整型数据,注意判断字符串长度
#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;
}