指针篇练习不再区分,放在一篇文章里面
要求:
http://codeup.cn/problem.php?cid=100000571&pid=0
代码:
#include <stdio.h>
void swap(int* a,int *b){
if(*a > *b){
printf("%d %d\n",*a,*b);
}
else{
printf("%d %d\n",*b,*a);
}
}
int main(){
int a,b;
scanf("%d %d",&a,&b);
int* m = &a;
int* n = &b;
swap(m,n);
return 0;
}
要求:
http://codeup.cn/problem.php?cid=100000571&pid=1
代码:
#include <stdio.h>
void swap(int* a,int *b,int *c){
if(*a > *b){
if(*a > *c){
if(*b > *c){
printf("%d %d %d\n",*a,*b,*c);
}
else{
printf("%d %d %d\n",*a,*c,*b);
}
}
else{
printf("%d %d %d\n",*c,*a,*b);
}
}
else{
if(*a < *c){
if(*b <*c){
printf("%d %d %d\n",*c,*b,*a);
}
else{
printf("%d %d %d\n",*b,*c,*a);
}
}
else{
printf("%d %d %d\n",*b,*a,*c);
}
}
}
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int* m = &a;
int* n = &b;
int* o = &c;
swap(m,n,o);
return 0;
}
要求:
http://codeup.cn/problem.php?cid=100000571&pid=2
代码:
#include <stdio.h>
#include <string.h>
int main(){
char *a = "I love China!";
int n;
scanf("%d",&n);
int len = strlen(a);
for(int i = n;i <len;i++){
printf("%c",a[i]);
}
printf("\n");
}
/*
int main(){
char str[14] = "I love China!";
int n;
scanf("%d",&n);
int len = strlen(str);
for(int i = n;i < len;i++){
printf("%c",str[i]);
}
printf("\n");
}
*/
要求:
http://codeup.cn/problem.php?cid=100000571&pid=3
代码:
#include <stdio.h>
#include <string.h>
void swap(char a[],char b[],char c[]){
if(strcmp(a,b) > 0){
if(strcmp(a,c) > 0){
if(strcmp(b,c)> 0){
printf("%s\n%s\n%s\n",c,b,a);
}
else{
printf("%s\n%s\n%s\n",b,c,a);
}
}
else{
printf("%s\n%s\n%s\n",b,a,c);
}
}
else{
if(strcmp(a,c) < 0){
if(strcmp(b,c) < 0){
printf("%s\n%s\n%s\n",a,b,c);
}
else{
printf("%s\n%s\n%s\n",a,c,b);
}
}
else{
printf("%s\n%s\n%s\n",c,a,b);
}
}
}
int main(){
char a[20];
char b[20];
char c[20];
gets(a);
gets(b);
gets(c);
char* m = a;
char* n = b;
char* o = c;
swap(m,n,o);
return 0;
}
要求:
http://codeup.cn/problem.php?cid=100000571&pid=4
说明:
这一题感觉稍难一些,但最坑的是我在判别的时候用了=而不是==,导致反复错误还不知道怎么错的,也是醉了。。。
思路是弄两个数组,其中一个冒泡排序,得到最大值与最小值,另外一个拿每个数与最大、最小值比较,如果是,则对应修改。
谨记值得判别用 ==!!!
代码:
#include <stdio.h>
//写入函数
void write1(int a[],int b[]){
for(int i = 0;i <10;i++){
scanf("%d",&a[i]);
}
for(int i = 0; i<10;i++){
b[i] = a[i];
}
}
//将其中一个冒泡排序
void swap(int a[]){
for(int i = 1;i <=9;i++){
for(int j = 0;j < 10 - i;j++){
if(a[j]>a[j + 1]){
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
//输出函数
void put1(int a[]){
for(int i = 0;i<10;i++){
printf("%d ",a[i]);
}
printf("\n");
}
//主函数(处理一部分放在主函数里面了)
int main(){
int m[11],n[11];
write1(m,n);
swap(m);
for(int i = 0;i <10;i++){
if( n[i]== m[9]){
n[i] = n[9];
n[9] = m[9];
}
else if(n[i] == m[0]){
n[i] = n[0];
n[0] = m[0];
}
}
put1(n);
}