1.正数的平方根
#include <stdio.h>
int main(void)
{
float Number, CurAppro, PreAppro;
printf("please input a number:\n");
scanf("%f", &Number);
if(Number < 0)
{
printf("number must is positive\n");
return 0;
}
CurAppro = 1;
PreAppro = 0;
while(CurAppro != PreAppro)
{
PreAppro = CurAppro;
CurAppro = (CurAppro + Number / CurAppro) / 2;
printf("%f\n", CurAppro);
}
printf("%f\n", CurAppro);
return 0;
}
2.打印1-100的质数
#include <stdio.h>
int main(void)
{
int Number, divisor;
printf("1\n2\n");
for(Number = 3; Number <= 100; Number += 2)
{
for(divisor = 3; divisor < Number; divisor += 2)
{
if(Number % divisor == 0)
break;
}
if(divisor >= Number)
printf("%d\n", Number);
}
return 0;
}
这里的循环控制变量每次加二,表示只计算奇数,减少了一半的计算量。
3.用户输入三角形3条边的长度,判断这个三角形是什么三角形
#include <stdio.h>
int main(void)
{
int a, b, c;
printf("please enter the length of three edges\n");
while(1)
{
while(scanf("%d %d %d", &a, &b, &c) != 3)
{
while(getchar() != '\n');
printf("enter again\n");
}
while(getchar() != '\n');
/*
**假设c是最短边,b是次短边,a是最长边
*/
if(a < b)
{
int tmp = b;
b = a;
a = tmp;
}
if(a < c)
{
int tmp = c;
c = a;
a = tmp;
}
if(b < c)
{
int tmp = b;
b = c;
c = tmp;
}
if((c > 0) && (a - b < c))
{
if(a == b && b == c)
{
printf("Equilateral triangle\n");
}
else if(b == c || a == b)
{
printf("Dengyao triangle\n");
}
else
{
printf("Not equilateral triangle\n");
}
}
else
printf("not a triangle\n");
}
return 0;
}
4.编写函数copy_n(char dst[], char src[], int n);
void copy_n(char dst[], char src[], int n)
{
int DstPos, SrcPos;
SrcPos = 0;
for(DstPos = 0; DstPos < n; DstPos++)
{
dst[DstPos] == src[SrcPos];
if(src[SrcPos] != '\0')
{
SrcPos++;
}
}
}
5.从标准输入一行一行读取文本,如果文件中有两行或更多行相邻的文本内容,就打印其中的一行,其余的不打印。可以假设问本行的长度不会超过128字节。
int main(void)
{
int HavePrint = 0;
char CurLine[128];
char PreLine[128];
if(gets(PreLine) != NULL)
{
while(gets(CurLine) != NULL)
{
if(strcmp(PreLine, CurLine) != 0)
{
HavePrint = 0;
strcpy(PreLine, CurLine);
}
else if(HavePrint == 0)
{
HavePrint = 1;
printf("%s\n", CurLine);
}
}
}
return 0;
}
6.编写一个函数,原型如下:
int substr(char dst[], char stc[], int start, int len);
是从src数组起始位置开始偏移start个字符的位置,最多复制len个非NUL字符到dst数组。复制完成后dst必须以NUL字节结尾。
int substr(char dst[], char src[], int start, int len)
{
int startPos;
int dstPos;
if(start < 0 || len < 0)
{
return -1;
}
for(startPos = 0; startPos < start && src[startPos] != '\0'; startPos++)
;
for(dstPos = 0; dstPos < len; dstPos++)
{
dst[dstPos] = src[startPos];
if(src[startPos] != '\0')
{
startPos++;
}
}
dst[dstPos] = '\0';
return 0;
}
7.去除字符串中的多余空格:
void deblank( char string[] );
当字符串中有一个地方由一个或多个连续的空格组成,就改为单个空格、
int IsWhite(char c)
{
return (c == ' ') || (c == '\t') || (c == '\n') || (c == '\v');
}
void deblank(char string[])
{
char *destPos, *SrcPos;
char c;
int IsFirstWhite;
IsFirstWhite = 1;
for(SrcPos = string, destPos = string; (c = *SrcPos) != '\0'; SrcPos++)
{
if(IsWhite(c))
{
if(IsFirstWhite == 1)
{
*destPos++ = ' ';
IsFirstWhite = 0;
}
}
else
{
*destPos++ = *SrcPos;
IsFirstWhite = 1;
}
}
*destPos = '\0';
}
跟合并内容相同的行那题有些相似