等时间嘉许,等春风得意。
一,main函数知识点
C语言规定,在一个源程序中,main函数的位置可以任意
二,若有定义语句:int year = 1009, *p = &year; 以下不能使year中的值增至1010的语句是()
A.*p+=1;
B.(*p)++;
C.++(*p)
D.*p++;
选择:D
题目代码可化为:int year = 1009; int* p = &year;
D.*p++相当于*p;p=p+1; 后置++是给p的值++
三,求最小公倍数
题目内容:
正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
数据范围:1<=A,B<=100000
输入描述:
输入两个正整数A和B
输出描述:
输出A和B的最小公倍数
(1)效率较低
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
//计算最小公倍数
int m = (a > b ? a : b);
while (1)
{
if (m % a == 0 && m % b == 0)
{
break;
}
m++;
}
//打印
printf("%d\n", m);
return 0;
}
(2)
#include <stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
//计算
int i = 1;
while (a * i % b)
{
i++;
}
//打印
printf("%d\n", i * a);
return 0;
}
四,倒置字符串
题目内容:
将一句话的单词进行倒置,标点不倒置
比如:I like Beijing. 经过函数后变为:Beijing. like I
输入描述:
每个测试输入包含1个测试用例:I like Beijing. 输入用例长度不超过100
输出描述:
依次输出倒置之后的字符串,以空格分割
#include <stdio.h>
#include <assert.h>
//逆序字符串
void reverse(char* left, char* right)
{
assert(left);
assert(right);
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
char arr[101] = { 0 };
//输入
gets(arr);
//逆置
int len = strlen(arr);
//1.逆序整个字符串
reverse(arr, arr + len - 1);
//2.逆序每个单词
char* start = arr;
while (*start)
{
char* end = start;
while (*end != ' '&&*end != '\0')
{
end++;
}
reverse(start, end - 1);
if (*end != '\0')
end++;
start = end;
}
//输出
printf("%s\n", arr);
return 0;
}